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

标签 ruby ternary-operator

我正在阅读 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 + ")"

由于用引号引起来,在此上下文中 AdminUser 用作字符串而不是常量。

关于ruby - 有人可以向我解释以下代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9867122/

相关文章:

ruby - ruby 和 irb 使用不同的模块搜索路径吗?

ruby-on-rails - git post-receive hook 没有运行 bundle install

ruby-on-rails - 如何在 Rails 3 中创建自定义脚手架生成器?

Java三元运算符和设置循环索引值

c++ - C++ 奇怪行为中的三元运算符

ruby-on-rails - rails console - 运行一段代码

ruby-on-rails - 等效于哈希的 .try() 以避免 "undefined method"错误?

javascript - AngularJS - 在绑定(bind)中使用三元运算符和过滤器

C++、三元运算符和 cout

java - 使用三元运算符和最终变量时出现意外输出