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