我通常做使用||的Ruby/Rails確定值,使用零值的空字符串,而不是
value = input || "default"
因此,如果輸入=零
value = "default"
但我怎麼能做到這一點所以不是nil
它還計算一個空字符串作爲''
nil
我想,這樣如果我做
input = ''
value = input || "default"
=> "default"
沒有if
有沒有一個簡單而優雅的方式來做到這一點?
我通常做使用||的Ruby/Rails確定值,使用零值的空字符串,而不是
value = input || "default"
因此,如果輸入=零
value = "default"
但我怎麼能做到這一點所以不是nil
它還計算一個空字符串作爲''
nil
我想,這樣如果我做
input = ''
value = input || "default"
=> "default"
沒有if
有沒有一個簡單而優雅的方式來做到這一點?
我通常做的是這樣的:
value = input.blank? ? "default" : input
在迴應的情況下輸入可能不被定義,可以通過保護它:
value = input || (input.blank? ? "default" : input)
# I just tried that the parentheses are required, or else its return is incorrect
對於純紅寶石(不依賴於Rails的),你可以使用empty?
value = input || (input.empty? ? "default" : input)
value = (input ||= "").empty? ? "default" : input # thanks gg_s for providing this
也許irrelavant但我會用高架像這樣的內容:
require "highline/import"
input = ask('Input: ') { |q| q.default = "default" }
它的工作原理沒有Rails的。真的很整潔的解決方案。
請注意,您將問題標記爲'ruby-on-rails',因此Rails具體的答案。 –
是的,我在軌道上運行,所以它沒有問題,我也標記紅寶石,因爲它看起來更像一個紅寶石問題 - 編輯標題以更好地匹配答案/問題 – Akshat