Ruby类vs Struct

前端之家收集整理的这篇文章主要介绍了Ruby类vs Struct前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经看到使用Structs的代码库来包装一个类中的属性和行为.
Ruby Class和Struct之间有什么区别?何时应该使用另一个?

解决方法

Struct docs

A Struct is a convenient way to bundle a number of attributes together,using accessor methods,without having to write an explicit class.

The Struct class generates new subclasses that hold a set of members and their values. For each member a reader and writer method is created similar to Module#attr_accessor.

所以,如果我想要一个Person类,我可以访问一个name属性(读写),我可以通过声明一个类:

class Person
  attr_accessor :name

  def initalize(name)
    @name = name
  end
end

或使用Struct

Person = Struct.new(:name)

在这两种情况下,我可以运行以下代码

person = Person.new
 person.name = "Name"
 #or Person.new("Name")
 puts person.name

使用时?

如描述所述,当我们需要一组可访问的属性而不必编写一个显式类时,我们使用Structs.

例如,我想要一个点变量来保存X和Y值:

point = Struct.new(:x,:y).new(20,30)
point.x #=> 20

更多的例子:

> http://blog.steveklabnik.com/posts/2012-09-01-random-ruby-tricks–struct-new
>“When to use Struct instead of Hash in Ruby?”也有一些很好的点(与使用哈希比较).

猜你在找的Ruby相关文章