gpt4 book ai didi

ruby - 使用参数的默认值显式调用 Ruby 方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:06 26 4
gpt4 key购买 nike

不幸的是,大量的方法是用下面的形式编写的:

def my_method(foo = {}, bar = {})
# Do stuff with foo and bar
end

虽然我很欣赏不必在我引用该方法的所有地方都写 my_method({}, {}) ,但使用第二个参数的默认值以外的其他值也会让我使用第一个参数的默认值以外的值 - my_method({}, foo: 'bar')

有没有办法告诉 Ruby 在其他后续参数需要使用默认值以外的参数时使用参数的默认值?我希望以 my_method(__default__, foo: 'bar') 的形式出现,但欢迎任何其他解决此问题核心的解决方案。

当 API 发生微小(但重要)变化时,这将特别有用。偶尔会导致难以发现错误:

# Original method
def foo(value = 'true', options = {})
# ...
end

# Defaults are updated slightly in a new version of the library
def foo(value = true, options = {})
# ...
end

# My code might break in an unexpected way now
foo('true', bar: 'baz')

最佳答案

这就是关键字参数(ruby 2 的新功能)要解决的问题(前提是您控制方法定义)。

def foo(a: {}, b: {})
"a: #{a}, b: #{b}"
end

foo # => "a: {}, b: {}"
foo(a: 1, b: 2) # => "a: 1, b: 2"
foo(a: 3) # => "a: 3, b: {}"
foo(b: 4) # => "a: {}, b: 4"

关于ruby - 使用参数的默认值显式调用 Ruby 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281711/

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