gpt4 book ai didi

Ruby:定义实例变量的更短方式

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

我正在寻找在 initialize 方法中定义实例变量的更短方式:

class MyClass
attr_accessor :foo, :bar, :baz, :qux
# Typing same stuff all the time is boring
def initialize(foo, bar, baz, qux)
@foo, @bar, @baz, @qux = foo, bar, baz, qux
end
end

Ruby 是否有任何内置功能可以避免这种猴子工作?

# e. g.
class MyClass
attr_accessor :foo, :bar, :baz, :qux
# Typing same stuff all the time is boring
def initialize(foo, bar, baz, qux)
# Leveraging built-in language feature
# instance variables are defined automatically
end
end

最佳答案

见面Struct ,专为此而生的工具!

MyClass = Struct.new(:foo, :bar, :baz, :qux) do
# Define your other methods here.
# Initializer/accessors will be generated for you.
end

mc = MyClass.new(1)
mc.foo # => 1
mc.bar # => nil

我经常看到人们这样使用 Struct:

class MyStruct < Struct.new(:foo, :bar, :baz, :qux)
end

但这会导致多出一个未使用的类对象。为什么在不需要时制造垃圾?

关于Ruby:定义实例变量的更短方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35792797/

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