Pie*_*ois 8 ruby ruby-on-rails ruby-on-rails-3
使用Struct与定义initialize方法有哪些优缺点?
我已经可以看到它涉及更少的代码而不是在错过参数时提高:
使用struct:
class Fruit < Struct.new(:name)
end
> Fruit.new.name
=> nil
> Fruit.new('apple').name
=> "apple"
Run Code Online (Sandbox Code Playgroud)
使用初始化:
class Fruit
attr_accessor :name
def initialize(name)
@name = name
end
end
> Fruit.new.name
ArgumentError: wrong number of arguments (0 for 1)
> Fruit.new('apple').name
=> "apple"
Run Code Online (Sandbox Code Playgroud)
你的想法是什么 ?您是否Struct经常在项目中使用?
Jes*_*ott 14
类(非结构)具有更简单的祖先树:
>> Fruit.ancestors
=> [Fruit, Object, Kernel, BasicObject]
Run Code Online (Sandbox Code Playgroud)
与struct版本相比:
>> Fruit.ancestors
=> [Fruit, #<Class:0x1101c9038>, Struct, Enumerable, Object, Kernel, BasicObject]
Run Code Online (Sandbox Code Playgroud)
因此,Struct类可能被误认为是一个数组(很少见,但绝对可能发生)
fruit = Fruit.new("yo")
# .. later
fruit.each do |k|
puts k
end
# outputs: yo
Run Code Online (Sandbox Code Playgroud)
所以...我使用Structs作为丢弃数据对象.我在我的域和应用程序中使用"真正的"类.
| 归档时间: |
|
| 查看次数: |
3817 次 |
| 最近记录: |