`

为BitStruct添加list类型

阅读更多
class BitStruct
  def self.list(name,element)
    module_eval <<-HERE
      rest :body
      def #{name.to_s}=(elist)
         e=Object.const_get(:#{element})
         if elist.respond_to? :each and elist.respond_to? :[] and elist[0].is_a? e
            elist.each{ |value| self.body+=value}
         elsif elist.is_a? e
            self.body=elist
         else
            raise ArgumentError,elist.to_s<<" is not a #{element}",caller
         end
      end
      def #{name.to_s}
         result=[]
         e=Object.const_get(:#{element})
         size=e.new.size
         num=self.body.size/size-1
         for i in 0..num
            result[i]=e.new(self.body[i*size,size])
         end
         result
      end
    HERE
  end
end

 

使用的话:

 

class A <BitStruct
   unsigned :id,32
end
class B<BitStruct
   list :aList,A
end
alist=[]
for i in 0..10
  a=A.new
  a.id=i
  alist.unshift a
end
b=B.new
b.aList=alist
b.aList.each{|e| puts e.id}
 

 

1
0
分享到:
评论

相关推荐

    c#list添加数据

    描述中提到“list&lt;&gt;.count==0”的情况,即列表为空时,需要向列表中添加数据。下面我们将详细讲解如何操作。 首先,我们来看代码中的`GetIssuingDate()`方法。这个方法的目的是获取满足特定条件的`QKDJXT.Model....

    Spring MVC不能直接接收list类型参数的问题

    在 AJAX 请求中添加 `traditional: true` 参数,以确保数组类型的参数被正确地序列化并发送给服务器。 **示例代码**: ```javascript $.ajax({ url: "xxxx", traditional: true, data: { areaList: ["123", "456...

    List列表拒绝添加重复信息

    List允许存储任意类型的对象,并且可以按照索引进行访问。然而,在某些情况下,我们可能希望创建一个不允许添加重复元素的List。在这种场景下,Python提供了多种策略来实现这个功能。 首先,我们可以使用Python的...

    ListControl支持右键菜单动态添加、删除行

    在本话题中,我们将深入探讨如何实现`ListControl`支持右键菜单动态添加和删除行的功能,以及如何进行编辑(edit)和使用下拉框(Combox)选择。 首先,`ListControl`通常被用作`CListView`类的一部分,它是MFC框架...

    List control 添加check box

    在Windows编程中,ListView控件(也...总之,为ListView控件添加复选框功能是一项常见的任务,无论是通过WinAPI还是MFC库,都可以方便地实现。了解这些基本概念和技巧,可以帮助你创建更具交互性的Windows应用程序。

    把excel导入List中行也为list

    对于每一行,再次遍历其Cells,将Cell的值转换为String并添加到当前行的List中。 5. **构建最终的List**:将每行数据的List添加到一个大的List中,这样就得到了一个`List&lt;List&lt;String&gt;&gt;`结构。 以下是一个简单的...

    创建一个数据类型为T的链表类模板List,实现以下成员函数的模拟测试.cpp

    1. 请创建一个数据类型为T的链表类模板List,实现以下成员函数: 1) 默认构造函数List(),将该链表初始化为一个空链表(10分) 2) 拷贝构造函数List(const List& list),根据一个给定的链表构造当前链表(10分)...

    c#多个结构类型相同的list 组合

    例如,`List1.AddRange(list2)`会将`list2`的所有元素添加到`List1`的末尾,而无需创建新的列表实例。 在描述的场景中,`DealIssuingDate`方法用于处理发行日期相关的数据。这里涉及到两个列表:`qkmxList`和`...

    List转换为List

    在某些情况下,我们可能需要将List中的对象转换为另一种类型的对象,但保持其List的结构不变。 ### list转换为JsonArray 在Web开发中,尤其是前后端分离的项目,经常需要将后端Java对象转换为JSON格式的数据,以便...

    MFC中ListCtrl添加图标,更改图标

    在MFC中向ListCtrl的subItem0添加icon图标,用定时器定时去改变图标。

    qml q_property list使用

    QML支持多种内置数据类型,其中`list`类型用于存储一组有序的元素,这些元素可以是任何QML类型。列表用方括号 `[]` 来表示,并且可以动态地添加或删除元素。例如,一个存储字符串的列表可以这样声明: ```qml ...

    DataSet 转化为List的通用方法

    通用转换方法的核心在于能够自动识别`DataSet`中`DataTable`的列类型,并将其转换为相应的`List&lt;T&gt;`类型,其中`T`为具体的业务实体类。以下是对代码片段的详细解析: ```csharp public List&lt;T&gt; ChangeDataSet...

    webservice获取List案例

    泛型List允许我们在List中存储特定类型的元素,如List或List,确保了添加和检索元素时的类型一致性。 3. **XML配置**:由于WebService返回的是XML格式的数据,因此在处理非简单类型如List时,需要进行XML配置来正确...

    ListCtrl中插入图片,按钮,右键菜单,Edit控件等

    本教程将详细讲解如何在ListCtrl中插入图片、按钮、颜色、Edit控件,以及添加右键菜单和气泡提示,帮助开发者更好地利用ListCtrl进行界面设计。 1. **插入图片** 在ListCtrl中插入图片通常通过设置LVS_ICON或LVS_...

    C#将List与xml互转 支持简单类型

    C#将List与xml互转 支持简单类型 list转xml xml转list

    在ListCtrl列表控件中添加edit和combo

    本文将详细介绍如何在`ListCtrl`中添加`Edit`和`ComboBox`控件,并提供一个VC6编译通过的类封装示例。 首先,我们要了解`ListCtrl`的基本用法。`ListCtrl`控件继承自`CWnd`,提供了多种视图模式,如报告视图、图标...

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    创建`List&lt;T&gt;`对象时,我们需要指定T的类型,即存储的数据类型。例如,创建一个存储整数的列表: ```csharp List&lt;int&gt; numbers = new List(); ``` 或者初始化时直接添加元素: ```csharp List&lt;int&gt; numbers = new...

    list to list 将list内容移到另一个list

    1. **列表的基本操作**:在Python中,列表是一种有序的集合,可以包含任意类型的元素,如整数、字符串甚至是其他列表。列表可以通过索引来访问元素,并支持多种操作,如添加元素(append、extend)、删除元素...

    Java中List add添加不同类型元素的讲解

    List中可以添加不同类型的元素,这是因为Java中的所有类都继承于Object类,而List中的泛型类型默认为Object类型。这意味着,我们可以将任何类型的对象添加到List中,但是当我们从List中取出对象时,需要强制转换成...

Global site tag (gtag.js) - Google Analytics