有人可以帮我缩短以下方法吗?我从这开始,我很喜欢这个:
def self.some_hash
{ "foo" => "bar" }
end
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个可选键.我能想到的最简洁的语法是这样的:
def self.some_hash(some_key=nil)
answer = { "foo" => "bar" }
answer[some_key] = "yucky, long-winded syntax" if some_key
answer
end
Run Code Online (Sandbox Code Playgroud)
修改后的方法有效,但我对虚拟墨水的浪费感到不满意.有没有办法缩短它?我意识到可以在哈希文字上使用三元运算符,但这会强制(我认为)"foo" => "bar"
在条件的每个分支上重复该对,这也略微小于原始状态.
saw*_*awa 10
def self.some_hash(some_key = nil)
{"foo" => "bar"}.merge(some_key ? {some_key => "yucky, long-winded syntax"} : {})
end
Run Code Online (Sandbox Code Playgroud)
或者,如果修改原始哈希,
def self.some_hash(some_key = nil)
{"foo" => "bar"}
.tap{|h| h.merge!(some_key => "yucky, long-winded syntax") if some_key}
end
Run Code Online (Sandbox Code Playgroud)
或者,也许你可以以接近原作的方式做到:
def self.some_hash(some_key = nil)
{"foo" => "bar"}
.tap{|h| h[some_key] = "yucky, long-winded syntax" if some_key}
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2049 次 |
最近记录: |