【发布时间】:2017-01-04 04:06:39
【问题描述】:
在 Javascript 中我可以这样做:
myVar = 1
obj = { myVar }
obj.myVar == 1 // true
在 Ruby 中,只能在方法中使用关键字参数做类似的事情:
def foo(a:, b:)
[a,b]
end
foo(a: 1, b: 2) # [1,2]
在实践中,我发现这会使代码更加冗长。我不必像使用顺序参数那样命名一个变量,而是必须命名它两次才能将其作为参数发送:
def method_1(a:, b:)
method_2(a: a, b: b) # repetition is here
end
我知道 ** 运算符用作关键字参数的 splat。但我宁愿不要在我的方法定义中加入 splats,因为它会使代码难以理解。
我并不是说关键字参数是无用的(它比解析 options 哈希更清楚),但如果它们支持常规哈希构造(如在 Javascript 中),它们会更有用。
无论如何,我想知道在 Ruby 本身中是否有任何方法可以做到这一点,或者我是否应该寻找另一种语言。
【问题讨论】:
-
你真的要放弃这种语言,因为你必须输入
a: a?
标签: ruby