gpt4 book ai didi

ruby - 带有可选参数的 ArgumentError

转载 作者:行者123 更新时间:2023-12-04 13:07:17 28 4
gpt4 key购买 nike

谁能帮我解决这个问题:

ruby 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' 变量不应该接收参数吗?我试图搜索解释,但似乎找不到任何解释


我曾经像 payload 一样使用 internal_proxy 变量;

def send_request(url, payload = {}, internal_proxy = true)

但是 rubocop 警告我;

Use keyword arguments when defining method with boolean argument.
(convention:Style/OptionalBooleanParameter)

第一个非可选参数的散列是否总是算作关键字参数?如果是这样,我怎样才能得到我上面提到的预期行为? (除非出于某种原因是一种不好的做法)

这是一个错误,还是有什么原因??

最佳答案

在 Ruby < 3.0 中,如果最后一个参数是散列,并且被调用的方法接受关键字参数,那么它总是被转换为关键字参数。

Ruby 3.0 修复了这个问题。

如果可以,您应该升级到 Ruby 3.0,否则请考虑使用不同的 API。

关于ruby - 带有可选参数的 ArgumentError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68807929/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com