gpt4 book ai didi

ruby - 如何摆脱 'new' 来实例化 Ruby 对象?

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

出于美观的原因,我想提供一种语法,用于从我的一些类中实例化对象,不使用关键字“new”。我从未尝试过,但我知道这是可能的:例如 Matrix gem 提供了如下语法:

Matrix [ [1,2], [3,4] ] 

我怎么能这样做呢?

最佳答案

只需定义一个具有相同名称(类的名称)的方法,它将调用 .new

class User
def initialize(name)
@name = name
end

attr_reader :name
end

def User(name)
User.new(name)
end

u = User("Sergio")
u.name # => "Sergio"

注意:我个人不喜欢这种技术。导致更难理解代码。 “只是看起来更好”的理由并不能成为你使用它的借口。

其实,是ruby中的一种模式,叫做“转换法”。如果仔细观察,ruby stdlib 中的所有大写方法都将值从一种形式转换为另一种形式。除非您正在编写转换方法,否则不要这样做。

关于ruby - 如何摆脱 'new' 来实例化 Ruby 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831557/

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