rue*_*ghn 3 ruby ternary-operator
我跟随Rails 3 in Action一书,它正在谈论to_s模型中的覆盖.代码如下:
def to_s
"#{email} (#{admin? ? "Admin" : "User"})"
end
Run Code Online (Sandbox Code Playgroud)
我知道在Ruby中你可以用双引号显示一个值"#{value}",但是双重问号是什么?
这是字符串插值."#{email} (#{admin? ? "Admin" : "User"})"相当于
email.to_s + " (" + (admin? ? "Admin" : "User") + ")"
Run Code Online (Sandbox Code Playgroud)
那是
email.to_s + " (" + if admin? then "Admin" else "User" end + ")"
Run Code Online (Sandbox Code Playgroud)
作为被包含在引号中,在这种情况下的结果Admin和User用作字符串和不为常数.