【发布时间】:2021-10-18 19:20:46
【问题描述】:
谁能帮我解决这个问题:
红宝石 2.7.3p183
情况如下,这个方法:
def send_request(url, payload = {}, internal_proxy: true)
...
还有这个电话
send_request('random_address', { foo: :bar })
返回我:
Traceback (most recent call last):
5: from C:/Ruby27-x64/bin/irb.cmd:31:in `<main>'
4: from C:/Ruby27-x64/bin/irb.cmd:31:in `load'
3: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
2: from (irb):4
1: from (irb):1:in `send_request'
ArgumentError (unknown keyword: :foo)
我知道它正在尝试匹配可选参数,但为什么呢? 'payload' 变量不应该接收参数吗?我试图搜索解释,但我似乎找不到任何解释
我曾经使用 internal_proxy 变量,就像有效载荷一样;
def send_request(url, payload = {}, internal_proxy = true)
但是 rubocop 会警告我;
Use keyword arguments when defining method with boolean argument.
(convention:Style/OptionalBooleanParameter)
第一个非可选参数的散列是否总是算作关键字参数?如果是这样,我怎样才能得到我上面提到的预期行为? (除非出于某种原因是一种不好的做法)
这是一个错误,还是有原因??
【问题讨论】: