<%if @item.rigged %>Yes<%else%>No<%end%>
我在想這樣的事情嗎?一行if語句不起作用
if @item.rigged ? "Yes" : "No"
但它不起作用。紅寶石有||=
但是我「米甚至不知道如何使用這些東西。
<%if @item.rigged %>Yes<%else%>No<%end%>
我在想這樣的事情嗎?一行if語句不起作用
if @item.rigged ? "Yes" : "No"
但它不起作用。紅寶石有||=
但是我「米甚至不知道如何使用這些東西。
從if @item.rigged ? "Yes" : "No"
三元操作符刪除if
具有形式condition ? if_true : if_false
在Ruby中,條件和if
的then
部分表達式必須由表達式分隔符(即;
或換行符)或then
關鍵字分隔。
因此,所有這些都可以工作:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
在Ruby中還有一個條件運算符,但這是完全不必要的。 C中需要條件運算符,因爲它是一個運算符:在C中,if
是一個語句,因此無法返回值,因此如果要返回值,則需要使用可以返回值的某個值。 C中唯一可以返回值的是函數和運算符,並且由於在C中不可能使if
成爲函數,所以需要一個運算符。
但在Ruby中,if
是一個表達式。其實的一切是Ruby中的表達式,所以它已經可以返回一個值。有條件的運營商甚至不需要存在,更不用說使用它了。
BTW:這是習慣這是用來在最後問一個問題以問號命名方法,如:
@item.rigged?
這說明另一個問題在Ruby中使用條件運算符:
@item.rigged? ? 'Yes' : 'No'
很難用多個相互接近的問號來閱讀。
+1;'''解釋。 – 2013-08-30 11:35:01
謝謝。這應該被選爲最好的答案 – MostafaMV 2014-05-04 09:58:16
一號線如果:
<statement> if <condition>
您的情況:
"Yes" if @item.rigged
"No" if [email protected] # or: "No" unless @item.rigged
或''否「,除非@ item.rigged'防止'!' – Veger 2015-02-13 20:49:48
無論是外殼和C一行構建工作(紅寶石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"
您可以使用----
(@item.rigged)? 「是」:「否」
如果@item。操縱是真實的,它會返回「是」,否則將返回「否」
如果其他條件可以覆蓋有三元運算
@item.rigged? ? 'Yes' : 'No'
據我所知
3單行
a = 10 if <condition>
例如:a = 10 if true # a = 10
,b = 10 if false # b = nil
a = 10 unless <condition>
例如:a = 10 unless false # a = 10
,b = 10 unless true # b = nil
a = <condition> ? <a> : <b>
例如: a = true ? 10 : 100 # a = 10
,a = false ? 10 : 100 # a = 100
我希望它有幫助。
我已經回到這個答案無數次的語法...謝謝! – 2014-06-26 13:56:42
如果您的條件以'?'結尾可以放棄嗎?也就是說,如果條件是@ customer.sales.present?你可以放棄'?'嗎? ...別擔心。找到了一些我已經測試過的代碼。答案是'不' – 2015-01-21 05:54:46
@JayKilleen你是對的。紅寶石是所有關於聰明的技巧,但它是_that_聰明(: – 2015-01-23 07:47:42