<%if @item.rigged %>Yes<%else%>No<%end%>
Run Code Online (Sandbox Code Playgroud)
我在想这样的事情?
if @item.rigged ? "Yes" : "No"
Run Code Online (Sandbox Code Playgroud)
但它不起作用.Ruby有,||=但我甚至不确定如何使用那个东西.
Nik*_*bak 386
if从中移除if @item.rigged ? "Yes" : "No"
三元运营商有形式 condition ? if_true : if_false
Jör*_*tag 177
在Ruby中,表达式的条件和then部分if必须由表达式分隔符(即;或换行符)或then关键字分隔.
所以,所有这些都可行:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
Run Code Online (Sandbox Code Playgroud)
Ruby中也有一个条件运算符,但这完全没必要.C中需要条件运算符,因为它是一个运算符:在C中,if是一个语句,因此不能返回一个值,所以如果你想返回一个值,你需要使用一些可以返回值的东西.C中唯一可以返回值的东西是函数和运算符,因为不可能if在C中创建函数,所以需要一个运算符.
然而,在Ruby中,if是一个表达式.事实上,一切都是Ruby中的表达式,因此它已经可以返回一个值.条件运算符甚至不需要存在,更不用说使用它了.
顺便说一句:按惯例命名用于在末尾用问号提问的方法,如下所示:
@item.rigged?
Run Code Online (Sandbox Code Playgroud)
这显示了在Ruby中使用条件运算符的另一个问题:
@item.rigged? ? 'Yes' : 'No'
Run Code Online (Sandbox Code Playgroud)
使用彼此接近的多个问号很难阅读.
Bak*_*vic 63
一行如果:
<statement> if <condition>
Run Code Online (Sandbox Code Playgroud)
你的情况:
"Yes" if @item.rigged
"No" if !@item.rigged # or: "No" unless @item.rigged
Run Code Online (Sandbox Code Playgroud)
Ala*_*ong 19
据我所知
3个单线
a = 10 if <condition>例:
a = 10 if true # a = 10
b = 10 if false # b = nil
Run Code Online (Sandbox Code Playgroud)
a = 10 unless <condition>例:
a = 10 unless false # a = 10
b = 10 unless true # b = nil
Run Code Online (Sandbox Code Playgroud)
a = <condition> ? <a> : <b>例:
a = true ? 10 : 100 # a = 10
a = false ? 10 : 100 # a = 100
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助.
小智 7
shell和C单行结构都可以工作(ruby 1.9.3p429):
# Shell format
irb(main):022:0> true && "Yes" || "No"
=> "Yes"
irb(main):023:0> false && "Yes" || "No"
=> "No"
# C format
irb(main):024:0> true ? "Yes" : "No"
=> "Yes"
irb(main):025:0> false ? "Yes" : "No"
=> "No"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
244248 次 |
| 最近记录: |