gpt4 book ai didi

ruby - 哪个更地道 : positional arguments or option hashes?

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

我是 Ruby 的新手,我见过构造函数以几种不同的方式完成,我很好奇哪种方式更地道?这些是我见过的 2 个最常见的变体:

直接赋值:

class Foo

attr_accessor :id
attr_accessor :name

def initialize(id, name)
@id = id
@name = name
end

end

哈希传递:

class Foo

attr_accessor :id
attr_accessor :name

def initialize(options)
@id = options[:id]
@name = options[:name]
end

end

哪个是最惯用的,或者是否有我未在此处介绍的替代方法?

最佳答案

方法签名的数量

您所说的“直接赋值”实际上只是一个带有位置参数的方法签名。从哈希参数赋值是你在遗留代码中经常看到的东西,因为 2.0 版之前的 Ruby 解释器没有 keyword arguments。 ,而选项哈希是模拟它们的好方法。

两者都不是更惯用的;每个都有不同的用例。通常,当您想强制执行方法的元数时,位置参数更好,而当您想避免复杂的、依赖于顺序的签名并愿意自己处理 nils 和元数问题时,选项哈希更好。

使用显式签名以确保清晰度

如果您使用的是 Ruby 2.0 或更高版本,我建议坚持使用位置参数或关键字参数以使您的方法签名明确。作为一个额外的好处,具有良好变量名的显式签名减少了您需要编写的文档量; RDoc 等工具将很好地记录表达签名,但选项哈希很少是不言自明的。

关于ruby - 哪个更地道 : positional arguments or option hashes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17204952/

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