gpt4 book ai didi

ruby - 在 Ruby 中将可选参数从父级传递给子级

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

必须有一种 DRY 方法来执行此操作,而无需两次单独调用 File.open,也无需查看 File.open 的默认值是什么 权限是。对吧?

def ensure_file(path, contents, permissions=nil)
if permissions.nil?
File.open(path, 'w') do |f|
f.puts(contents)
end
else
File.open(path, 'w', permissions) do |f|
f.puts(contents)
end
end
end

最佳答案

在一般情况下,使用 splat(即 *some_array)是可行的:

def ensure_file(path, contents, permissions=nil)
# Build you array:
extra_args = []
extra_args << permissions if permissions
# Use it:
File.open(path, 'w', *extra_args) do |f|
f.puts(contents)
end
end

在这种情况下,您已经获得了作为参数的权限,因此您可以通过允许任意数量的可选参数并传递它们来简化这一点(并使其更加通用):

def ensure_file(path, contents, *extra_args)
File.open(path, 'w', *extra_args) do |f|
f.puts(contents)
end
end

唯一的区别是,如果传递的参数太多,当调用 File.open 而不是 ensure_file 时,将引发 ArgumentError .

关于ruby - 在 Ruby 中将可选参数从父级传递给子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524153/

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