[英]Ternary operators in ruby
似乎應該有更好的方法來做到這一點:
def some_method(argument = 'foo')
bar = argument == 'foo' ? 'foo' : "#{argument.to_s}_foo"
# ... do things with bar ...
end
有任何想法嗎? 我也玩過
bar = ("#{argument}_" if argument != 'foo').to_s + argument
但如果有什么事情看起來更復雜
在您的示例中,您似乎根本不需要為foo
和argument
不同的變量(如果以后都需要它們,那將有所不同,但是從您的示例中來看,看起來好像不是這樣)。
一個簡化將是:
def some_method(bar = 'foo')
unless bar == 'foo'
bar = "#{bar}_foo"
end
# Do things with bar
end
當然,如果您願意,可以執行unless
內聯, unless
:
bar = "#{bar}_foo" unless bar == 'foo'
旁注:插值時不需要調用to_s
。 Ruby會為您做到這一點。
如果默認情況下代碼中的argument
未變為"foo"
,則可以執行以下操作:
def some_method *argument
bar = [*argument, "foo"].join("_")
...
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.