有人可以向我解释以下代码吗?

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}",但是双重问号是什么?

Jan*_*Jan 7

这是字符串插值."#{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)

作为被包含在引号中,在这种情况下的结果AdminUser用作字符串和不为常数.