gpt4 book ai didi

ruby - 强制方法的默认值

转载 作者:数据小太阳 更新时间:2023-10-29 07:03:25 24 4
gpt4 key购买 nike

给定方法:

def foo(a,b=5,c=1)
return a+(b*c)
end

运行 foo(1) 应该返回 6。但是,您将如何着手做这样的事情:foo(1,DEFAULT,2)。我需要更改第三个值,但使用默认的第二个值。

你会怎么做? (注意:我不能只更改变量的顺序,因为它们是来自 gem 的方法的参数)

最佳答案

根据提出的条件,您不能这样做。这种情况正是在 Ruby 2 中引入命名(关键字)参数的原因。但是根据问题的条款,您的具有默认值的参数命名.

因此,它们是 positional — 这就是为什么可选参数必须放在最后 — 因此,规则是必须使用至少一个参数调用此方法(因为 a 不是可选的),并且将按照提供的顺序使用任何进一步的参数来填充相应的参数。

因此,您可以提供 a,或 ab,或 ab c。您不能单独提供 ac,如果这些参数已命名,您可以轻松地做到这一点。

我想到了两个明显的解决方案。

  • 调用该方法,提供第二个参数的默认值作为第二个参数。想必你知道它是什么,所以这不是什么困难:

    foo(1,5,2)
  • 写一个 trampoline 方法做同样的事情,但是参数 被命名为:

    def foo(a,b=5,c=1)
    return a+(b*c)
    end
    def bar(a,b:5,c:1)
    return foo(a,b,c)
    end
    bar(1,c:2) # => 11

关于ruby - 强制方法的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881802/

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