我正在阅读 Rails 3 in Action 一书,它正在讨论在模型中覆盖 to_s
。代码如下:
def to_s
"#{email} (#{admin? ? "Admin" : "User"})"
end
我知道在 Ruby 中您可以通过 "#{value}"
在双引号内显示一个值,但是双问号是怎么回事?
最佳答案
是string interpolation . "#{email} (#{admin? ? "Admin": "User"})"
等同于
email.to_s + " (" + (admin? ? "Admin" : "User") + ")"
也就是
email.to_s + " (" + if admin? then "Admin" else "User" end + ")"
由于用引号引起来,在此上下文中 Admin
和 User
用作字符串而不是常量。
关于ruby - 有人可以向我解释以下代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9867122/