回答:
これはコードスタイルの規則です。メソッドがブール値を返すことを示します。
疑問符は、メソッド名の末尾にある有効な文字です。
?
、Ruby には他にもいくつかの使い方があります(3項演算子、文字をそのASCII整数に変換、test
RegExでの使用など)。その多くは、ここでの他の回答で説明されています。
isEmpty()
、isDigit()
などでRubyは、同じ方法が書き込まれるempty?
と、digit?
かなりのよりよいがIMOです。
is
ます。私はいつも使用しています。疑問符が次の目的で使用されるため、Swiftから来た人にとってこれは非常に混乱するかもしれませんnullable
:)
あなたの例では、それはメソッド名の一部にすぎません。Rubyでは、メソッド名に感嘆符を使用することもできます。
Rubyの疑問符のもう1つの例は、3項演算子です。
customerName == "Fred" ? "Hello Fred" : "Who are you?"
あなたの例では
product.valid?
実際には関数呼び出しであり、という関数を呼び出しますvalid?
。特定のタイプの「条件のテスト」/ブール関数には、慣例により関数名の一部として疑問符が付いています。
?
sはメソッド名でのみ使用でき、変数では使用できないことに注意してください。Rubyを学習する過程で?
、ブール型の戻り値の型が指定されていると想定して、それらをフラグ変数に追加しようとすると、エラーが発生しました。このため、しばらくの間、?
sに関連する特別な構文があると誤って信じていました。
また、Kernel#testのテストメソッドの最初の引数で使用する一般的な規則です。
irb(main):001:0> test ?d, "/dev" # directory exists?
=> true
irb(main):002:0> test ?-, "/etc/hosts", "/etc/hosts" # are the files identical
=> true
この質問でここに見られるように
test
、?d
ためのショートカットです"d"
。test
最初の引数として1文字の文字列を取るため、test ?d, "/dev"
またはで呼び出すことができますtest "d", "/dev"
。