`
jy503160
  • 浏览: 20139 次
  • 性别: 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"
分享到:
评论

相关推荐

    struct和typedef struct区别

    "struct和typedef struct的区别" 在编程语言中,struct和typedef struct都是用来定义结构体类型的,但它们之间存在一些关键的区别。 首先,在C语言中,定义一个结构体类型需要使用typedef关键字,例如: ```c ...

    recursive-open-struct:OpenStruct子类,将嵌套的哈希属性作为RecursiveOpenStructs返回

    OpenStruct子类,该子类将嵌套的哈希属性作为RecursiveOpenStructs返回。 用法 它允许在一系列方法中调用哈希中的哈希: ros = RecursiveOpenStruct . new ( { wha : { tagoo : 'siam' } } ) ros . wha . tagoo # =...

    struct和union.pdf

    struct和union struct和union

    c++笔记struct和typedef struct彻底明白了

    c++笔记struct和typedef struct彻底明白了 在 C++ 编程语言中,struct 和 typedef struct 是两个非常重要的概念。今天,我们将深入探讨这两个概念的区别和使用方法。 首先,让我们从基本概念开始。struct 是一种...

    C_C++中typedef_struct和struct的用法

    C_C++中typedef_struct和struct的用法 在 C/C++ 中,struct 和 typedef struct 是两个常用的数据类型定义方式,它们之间有着微妙的区别。本文将详细介绍 struct 和 typedef struct 的用法,并通过实例代码演示其...

    xml和struct之间的相互转换

    XML(eXtensible Markup Language)和C语言中的struct是两种不同的数据表示方式。XML是一种用于标记数据的标准化格式,而struct是C语言中用来结构化数据的类型。在编程中,有时我们需要在两者之间进行转换,以实现...

    struct和union结构体和联合体的区别.pdf

    ### Struct和Union结构体和联合体的区别 #### 一、基本概念 - **Struct(结构体)**:在C语言中,`struct`是一种用户自定义的数据类型,它允许将不同类型的变量组合在一起,形成一个新的复合数据类型。结构体中的...

    systemverilog中struct和union的一种用法

    SystemVerilog 中 struct 和 union 的应用 SystemVerilog 是一款功能强大的硬件描述语言,广泛应用于 FPGA 和 ASIC 设计中。其中,struct 和 union 是两种常用的数据结构,它们可以用来组织和存储数据。本文将介绍 ...

    typedef struct 与 struct 的区别及初始化

    在C/C++编程语言中,`typedef` 和 `struct` 是两种不同的声明结构体类型的方式,它们各有特点,但也有一定的关联。理解这两者之间的差异以及如何初始化结构体是编程中非常重要的概念。 首先,`struct` 关键字用于...

    struct和union计算方法

    规则: 1,对于union,对齐的大小是最大的...3,这里所说的struct和union的对齐,是指其作为其他复杂对象中的元素的时候要求的对齐,对于本身大小的计算并没有关系。本身的大小只和其所包含的基本元素的对齐有关系。

    structtype&def_struct

    在C和C++中,`struct`的使用方式略有不同,特别是在与`typedef`关键字结合使用时。 1. `struct`定义: 在C语言中,定义一个结构体类型通常需要使用`typedef`关键字来创建一个别名,使得后续的声明更简洁。例如: ``...

    java struct2 收集整理的 一些资料 比如struct1和struct2的区别概述等

    java struct2 收集整理的 一些资料 比如struct1和struct2的区别概述等

    mapstruct-1.2.0.Final-API文档-中文版.zip

    赠送jar包:mapstruct-1.2.0.Final.jar; 赠送原API文档:mapstruct-1.2.0.Final-javadoc.jar; 赠送源代码:mapstruct-1.2.0.Final-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    matlab开发-struct2double

    此外,MATLAB还提供了与`struct2double`类似的函数,如`struct2cell`、`struct2array`等,它们分别用于将结构体转换为cell数组或普通数组,方便数据处理和操作。 在提供的压缩包中,`struct2double.m`很可能是实现`...

    mapstruct-1.1.0.Final-API文档-中文版.zip

    赠送jar包:mapstruct-1.1.0.Final.jar; 赠送原API文档:mapstruct-1.1.0.Final-javadoc.jar; 赠送源代码:mapstruct-1.1.0.Final-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Struct和运算符重载---详细

    在C++编程语言中,`struct`是一种用户自定义的数据类型,它允许我们将多个相关变量组合成一个单一的实体,方便管理和操作。`struct`在许多方面与类(class)相似,但默认情况下,其成员是公有的(public),而类的...

    mapstruct-1.3.1.Final-API文档-中英对照版.zip

    赠送jar包:mapstruct-1.3.1.Final.jar; 赠送原API文档:mapstruct-1.3.1.Final-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    ip struct ip struct

    综上所述,通过对 `struct ip_hdr`、`struct ip` 和 `struct eth_hdr` 的分析,我们不仅了解了 IP 数据报首部的关键组成部分,还进一步掌握了以太网头部的结构和意义。这些知识点对于理解互联网工作原理以及进行网络...

    mapstruct-1.3.1.Final-API文档-中文版.zip

    赠送jar包:mapstruct-1.3.1.Final.jar; 赠送原API文档:mapstruct-1.3.1.Final-javadoc.jar; 赠送源代码:mapstruct-1.3.1.Final-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics