`
jy503160
  • 浏览: 18739 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Struct和OpenStruct

    博客分类:
  • ruby
 
阅读更多

Ruby的Struct用于快速将很多属性一起绑定到对象上。

 

Ruby代码 复制代码 收藏代码
  1. #定义
  2. class Man < Struct.new(:name, :age)
  3. end
  4. #使用
  5. man = Man.new("allen", 24)
  6. puts "#{man.name} is #{man.age} years old" # => allen is 24 years old
#定义
class Man < Struct.new(:name, :age)

end

#使用
man = Man.new("allen", 24)
puts "#{man.name} is #{man.age} years old" # => allen is 24 years old

 

还有一种更强大的,OpenStruct可以动态的绑定属性。

 

Ruby代码 复制代码 收藏代码
  1. require 'ostruct'
  2. record = OpenStruct.new
  3. record.name = "John Smith"
  4. record.age = 70
  5. record.pension = 300
  6. puts record.name # => "John Smith"
  7. puts record.address # => nil
  8. #还可以支持用hash构建对象
  9. hash = { "country" => "Australia", :population => 20_000_000 }
  10. data = OpenStruct.new(hash)
  11. puts data # => <OpenStruct country="Australia" population=20000000>
  12. #动态添加一个block
  13. data.hello = Proc.new {puts "hello"}
  14. data.hello.call # => "hello"
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics