Mad*_*han 3 ruby ruby-on-rails ruby-on-rails-4
在Ruby中,我们经常使用三元运算符来检查条件.类似地,我们使用或运算符(||)来使用两者中的任何一个.
我有两种方式可以使用的场景:三元运算符
@question = question.present? ? question : Question.new
Run Code Online (Sandbox Code Playgroud)
或运营商
@question = question || Question.new
Run Code Online (Sandbox Code Playgroud)
这些条件有什么区别,因为两者都给出了相同的输出?另外哪一个更适合在控制器方法中使用,因为我没有经验来自己决定.
这里的区别在于,例如,[].present?或''.present?两者都返回false.所以:
question = ''
@question = question.present? ? question : Question.new
# => result of Question.new
@question = question || Question.new
# => ''
Run Code Online (Sandbox Code Playgroud)
但是,如果question只能持有nil或Question实例(它始终存在,假设它是常规ActiveRecord模型),那么它不应该意味着你的情况.所以这更多的是个人品味.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |