前提
ruby 2.6
内容
Boolean型の戻り値を返すメソッドを作ります。メソッドが、true / false のどっちかを返します。
例えば、次のメソッド、test1?とtest2は共に、trueを返します。
メソッド名に?をつけてもつけなくても同じ結果となります。
?をつけていた方が、メソッド名だけを見て判断して、Boolean型の戻り値を返すんだなと判断することができます。?をつけるのは、単にそれだけの理由なのでしょうか。
?をつけるのは、単に、慣習的な理由なのでしょうか?
それ以外の理由があるようでしたら教えていただけませんでしょうか。
def test1?(flg) if flg == 1 else return false end return true end def test2(flg) if flg == 1 else return false end return true end puts test1?(1) #=> true puts test2(1) #=> true
質問の前に調べてみたことはありますか?
Predicate Methods Suffix
https://github.com/rubocop/ruby-style-guide#predicate-methods-suffix
> The names of predicate methods (methods that return a boolean value) should end in a question mark (i.e. Array#empty?). Methods that don’t return a boolean, shouldn’t end in a question mark.
こんなところに回答があるのですね。情報のご提供ありがとうございます。
でも、booleanを返すメソッドで?をつけなくても文法上エラーになる仕様にはなっていないですけどね。
> でも、booleanを返すメソッドで?をつけなくても文法上エラーになる仕様にはなっていないですけどね。
今の処理系本体では静的な型チェックを行ってないので、そもそもエラーにしようが無いです。
3.0で型チェックの仕組みが入ってきたので、今後、型チェックツールが警告を出したりは可能でしょうが、エラーにはしないでしょうね。
なるほどです。
? をつける必要はないですが
?をつけたら boolean というか、「戻り値が if の判定部に使えるものにする」というのが 推奨というか慣習というか暗黙の了解というか、、になってます。
なるほどです。ご回答ありがとうございます。
回答1件
あなたの回答
tips
プレビュー