gpt4 book ai didi

Ruby 最佳实践 : working with classes

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

参见下面的示例,我想最好使用第二种方法,但第一种也可以。哪种方法最好,使用另一种的后果是什么?

class Test 
def start
p "started"
end
test = Test.new
test.start
end

class Test2
def start
p "started"
end
end
test2 = Test2.new
test2.start

最佳答案

我肯定会说第二种变体更有意义。第一个不会导致错误,但对象实例化完全过时且毫无意义。外部变量在类的范围内不可见:

var = "string"

class A
var = A.new
end

puts var #=> string

没有闭包,外层的 var 与类内的不同。这意味着您的对象在创建后“丢失”并且无法再访问,最终会受到 GC 的影响。

当您说第一个示例“有效”时,在此上下文中工作意味着它可以在类作用域中创建新创建的对象后立即调用该对象的方法。但是不可能将该对象作为以后使用的引用(不将其分配给类(实例)变量)。

如果您不需要引用供以后使用,并且您真的想做这样的“一次性”操作,那么使用可以在不实例化对象的情况下调用的类方法或者做必要的事情会更加惯用在 initialize 中,如果它是必须在每个实例化时完成的事情。

关于Ruby 最佳实践 : working with classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752768/

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