1

ruby の初心者で、teranary 演算子を調べています。

これは期待どおりに機能します。

5==5? "x" : "y"

ruby ではすべてが式であるため、"x" を返します。

しかし、これはそうではありません...

user.birthday? "x" : "y"

誕生日が nil かどうかを確認し、適切な文字列を返すことを想定しています。しかし、それは私に構文エラーを与えます:

syntax error, unexpected ':', expecting $end
user.birthday? "x" : "y"
                    ^

このステートメントと他のステートメントの違いは何ですか?

ありがとう

4

3 に答える 3

5

メソッドはRubyのクエスチョン マークで終わる場合があり、実際にそうすることがよくあります。

user.birthday ? "x" : "y"
于 2012-12-02T05:14:55.657 に答える
0

あなたの場合、user.birthday? ? 'x' : 'y' は、誕生日が nil/false でないかどうかを確認する場合に役立ちます。

于 2012-12-02T18:28:07.663 に答える
-2

ruby はオブジェクト指向プログラミング言語であるため、すべてのメソッド定義はクラスからの継承であり、それは「真」のようになります。これを試してください。

class User

def birthday(confirm)
    return true
end

end

us = User.new()

us.birthday("My birthday")

rep= us.birthday("My birthday") ? "x": "y"

puts rep

于 2012-12-02T05:33:57.330 に答える