gpt4 book ai didi

ruby - 设置未初始化的实例变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:10 25 4
gpt4 key购买 nike

在未初始化的类中使用实例变量并使用其他方法设置它们是否优雅?或者也许有更好的方法来做到这一点?

class Klass
def initialize(a)
@a = a
end

def set_b(b)
@b = b
end
end

最佳答案

与其他语言相比,如果您不初始化实例变量,它将始终为 nil(而在某些其他语言中,您可能会得到未定义的东西)。

只要 Klass 的其他方法不依赖于实际有值的实例变量,这应该没问题。

至于getter和setter,有attr_accessorattr_readerattr_writer(参见the docs)。

class Klass
attr_accessor :b
# there's also attr_reader and attr_writer

def initialize(a)
@a = a
end
end

k = Klass.new :foo
k.b = :bar

k.b
#=> :bar

k.a
#=> undefined method `a' for #<Klass:0x007f842a17c0e0 @a=:foo, @b=:bar> (NoMethodError)

关于ruby - 设置未初始化的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072804/

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