我想在Ruby中有條件地設置變量。如果變量爲零或空(0長度字符串),我需要設置它。我想出了以下幾點:空或無值字符串測試
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
雖然它的工作,它似乎並不像我很喜歡Ruby。表達上述的更簡潔的方式嗎?
我想在Ruby中有條件地設置變量。如果變量爲零或空(0長度字符串),我需要設置它。我想出了以下幾點:空或無值字符串測試
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
雖然它的工作,它似乎並不像我很喜歡Ruby。表達上述的更簡潔的方式嗎?
第二個子句不需要!variable.nil?
檢查評估是否達到該點,variable.nil
保證爲假(因爲short-circuiting)。
這應該是足夠了:
variable = id if variable.nil? || variable.empty?
如果你使用Ruby on Rails的工作,Object.blank?
解決了這個確切的問題:
一個目的是空白的,如果它是假的,空,或者一個空白字符串。例如,
""
," "
,nil
,[]
和{}
都是空白的。
完美,這就是我所需要的('Object.blank')。 Ruby和Rails總是讓我感到驚訝,它像禪宗一樣簡單。謝謝! :) –
此解決方案不適用於'variable = 3 p variable = 5 if variable.nil? || variable.empty?' –
這假設@RichardBrown不會在他期望成爲字符串變量的地方插入一個整數,是的。 –
variable = id if variable.to_s.empty?
如果你在Rails.blank?應該是你正在尋找的方法:
a = nil
b = []
c = ""
a.blank? #=> true
b.blank? #=> true
c.blank? #=> true
d = "1"
e = ["1"]
d.blank? #=> false
e.blank? #=> false
所以答案應該是:
variable = id if variable.blank?
的「紅寶石辦法」將不會進入狀態,你必須尼爾斯和空的混合物字符串。如果無論返回哪個函數,都會返回一個「空」值,它應該返回'nil',而不是'「」'。 – meagar