gpt4 book ai didi

ruby - 即使提供了参数,也会评估默认参数表达式吗?

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

我读到在 Ruby 中,默认参数表达式是为每个函数调用计算的。但是,如果我有这样的功能:

def foo(bar=super_heavy_work())
# ...
end

然后这样调用它:

foo "default argument not needed"

我现在提供了一个函数参数,所以我的问题是:在这种情况下是调用了超繁重的工作函数,还是因为不需要默认值而跳过了它?

最佳答案

不,如果您传递参数,默认值表达式不会被计算:

def foo
puts 'called foo!'
end

def bar(n = foo)
puts 'called bar!'
end

bar
# => called foo!
# => called bar!

bar("some value")
# => called bar!

关键字参数也是如此:

def foo
puts 'called foo!'
end

def bar(n: foo)
puts 'called bar!'
end

bar
# => called foo!
# => called bar!

bar(n: "some value")
# => called bar!

关于ruby - 即使提供了参数,也会评估默认参数表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161797/

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