【问题标题】:Use keyword arguments vs hash arguments in Ruby class constructor?在 Ruby 类构造函数中使用关键字参数与哈希参数?
【发布时间】:2020-05-17 03:53:30
【问题描述】:

我是 Ruby 新手,正在学习如何使用 Ruby 进行正确的 OOP,但我有一个问题,即哪种方法最适合使用类构造函数。

我见过很多使用哈希参数构造对象的例子:

class Person
    def initialize(params)
        @name = params[:name]
        @age = params[:age]
    end
end

person = Person.new(name:"Pepsi", age:42)

不过,我还发现了另一种干净有效的方法:

class Person
    def initialize(age:, name:)
        @name = name
        @age = age
    end
end

person = Person.new(name:"Pepsi", age:42)

在 Ruby 中更推荐哪种方式,为什么?非常感谢!

【问题讨论】:

    标签: ruby oop object


    【解决方案1】:

    它们都是有效的。关键字参数出现在 Ruby 2.0 中,因此一些较旧的代码库使用第一种方法 ((params)),尤其是在保持与 Ruby 1.8 和 1.9 的兼容性时。

    关键字形式有好处:

    • 您会收到拼写错误通知
    • 您可以轻松指定默认值
    • 方法签名传达存在哪些选项

    散列形式有好处:

    • 不会抱怨额外的价值
    • 可以适应字符串键和符号键的区别
    • 可以使用class等保留关键字作为键

    编写新代码时,选择最吸引人的形式。

    【讨论】:

    • 这对我来说很有意义。谢谢!
    猜你喜欢
    • 2016-05-10
    • 2018-04-26
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2016-01-20
    • 2023-01-30
    相关资源
    最近更新 更多