【发布时间】:2023-03-15 07:30:02
【问题描述】:
有人可以帮我缩短以下方法吗?我从这个开始,我很喜欢:
def self.some_hash
{ "foo" => "bar" }
end
现在我想添加一个可选键。我能想到的最简洁的语法是这样的:
def self.some_hash(some_key=nil)
answer = { "foo" => "bar" }
answer[some_key] = "yucky, long-winded syntax" if some_key
answer
end
修改后的方法有效,但我对虚拟墨水的浪费感到不满。有没有办法缩短它?我意识到可以在哈希文字上使用三元运算符,但这会强制(我认为)在条件的每个分支上重复 "foo" => "bar" 对,这也比原始的略少。
【问题讨论】:
-
“帮我缩短以下方法”是一个赠品,这应该在 codereview.stackexchange.com 上进行审查并帮助重构和优化。
-
很遗憾看到这个问题结束了,当它真正问的是“我如何有条件地在哈希中包含一个键/值对?”。我用Ruby 2.0's double-splat operator在别处写了一个答案。
-
@PaulAJungwirth,我想它已关闭,因为我只想改进工作代码。相反,我可能编造了一些垃圾语法,然后说它不起作用,而且在 SO 中一切都会好起来的。这是关于 ** 运算符的一个很好的提示!谢谢 谢谢!
-
没有一个答案提到 ** 运算符这一事实表明这个问题是相关的。但是,它是 stackoverflow.com/questions/5750770/… 的副本……因此应该关闭。
-
这个问题是关于编程语言语法的具体问题。这显然是主题。