如何在方法中使用带问号的参数有关键字参数?
def foo(arg?:)
p arg? # ERROR
end
foo(arg?: true)
刚刚确认,你可以做foo(arg?: true)
原版的:
我不确定你能不能“?”在一个小的。您可以尝试使该方法有一个输入arg这是一个哈希,然后我认为你可以做到
def foo(arg)
p arg[:"arg?"]
end
foo(:"arg?" => true)
引号可能没有必要,我必须打开控制台进行检查。在这种情况下:
foo(arg?: true)
塞尔吉奥正确地提到了这样一个事实:我没有在这个解决方案中使用关键词论证(kwarg),相反,我传递了一个单独的常规参数,我知道这个参数需要是一个带有:arg?
键的哈希。这通常称为选项哈希。这是人们在ruby语言添加对kwargs的支持之前所做的事情(或者我告诉:)。
你不能这样做。参数名称不能包含问号或感叹号。只有方法名称才能拥有它们。
正如约翰所提到的,你应该能够使用好的旧选项哈希。虽然在这种情况下foo(arg?: true)
,arg?: true
是散列中的键值对,而不是关键字参数。差异很大(使用选项哈希,例如,您不需要轻松的必需参数和拼写错误保护)。