`
orcl_zhang
  • 浏览: 243220 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用Array来实现OrderedHash

阅读更多
偶然发现电脑的角落里有这样的一段代码.功能是用Array实现的OrderedHash.
google了没找到出处,应该是自己写的了.贴出来,把文件删掉.
class OrderedOptions < Array
  def []=(key, value)
    key = key.to_sym

    if pair = find_pair(key)
      pair.pop
      pair << value
    else
      self << [key, value]
    end
  end

  def [](key)
    pair = find_pair(key.to_sym)
    pair ? pair.last : nil
  end

  def method_missing(name, *args)
    if name.to_s =~ /(.*)=$/
      self[$1.to_sym] = args.first
    else
      self[name]
    end
  end

  private
  def find_pair(key)
    self.each { |i| return i if i.first == key }
    return false
  end
end

分享到:
评论

相关推荐

    JavaScript实现Array(数组)和Map

    `array.js` 文件可能包含了对数组操作的一些自定义函数或者扩展,例如可能实现了数组去重、查找指定元素的索引、排序等功能。这些功能可以通过阅读源码来了解其具体的实现方式和用途。 接着,Map是ES6中新增的一种...

    Javascript实现Array和String互转换的方法

    本文将详细介绍如何使用JavaScript内置方法来实现数组与字符串之间的转换,其中涉及到了两个重要的字符串处理方法:toString方法和split方法。 首先,Array转为String。在JavaScript中,数组对象的toString方法可以...

    ARRAY实现MATRIX运算

    在本主题"ARRAY实现MATRIX运算"中,我们将深入探讨如何利用数组来实现矩阵(Matrix)的运算,特别是针对C++语言的实现。矩阵是数学中的一个二维数组,广泛应用于线性代数、图像处理、物理学等领域。 1. **数组表示...

    Array And Phased Array Antenna Basics

    10 Special Array Antenna Configurations 269 10.1 Conformal Array and Phased Array Antennas 269 10.1.1 Circular Sector Array and Phased Array Antenna 270 10.2 Volume Array and Phased Array Antennas 276...

    android数组资源string-array integer-array的用法

    在代码中,你可以通过`getIntegerArray(R.array.example_integer_array)`来访问这个整数数组。 除了这两种基本类型,Android还支持更复杂的数组资源,如`array`,可以包含多种数据类型。但需要注意的是,这种混合...

    pointer(array) control & Hash Control

    在C++编程中,"pointer(array) control & Hash Control" 主要涉及了对内存中对象的间接访问,以及高效的数据结构——哈希表的使用。这些概念在开发中经常用于管理和操作动态数据,特别是需要快速查找和存储的情况。 ...

    PV_Array.zip_PV array模块_pv array 仿真_pv arraymatlab_光伏特性_光伏电池

    “PV_Array.mdl”是压缩包内的一个文件,很可能是用MATLAB Simulink编写的PV阵列模型文件。打开这个文件,用户可以查看和修改模型参数,进行仿真以研究光伏电池或阵列在不同条件下的行为。 综上所述,这个压缩包...

    TIA博途中数组Array【】的基本使用方法详解.docx

    ### TIA博途中数组Array【】的基本使用方法详解 #### 一、数组Array【】概述 在TIA博途(Totally Integrated Automation Portal)中,数组(Array)是一种重要的数据结构,它由固定数量且相同数据类型的元素组成。...

    Array负载均衡配置

    - **智能DNS解析**:通过智能DNS解析,Array可以实现对不同链路的智能选择,以实现更快的访问速度和更好的用户体验。 ### Array设备的管理与操作 #### 1. 使用管理系统 - **管理系统概述**:Array设备的管理包括...

    Pandas实现dataframe和np.array的相互转换

    在Pandas中,实现DataFrame与NumPy Array的转换十分简单。要将DataFrame转换成NumPy Array,可以使用df.values属性。这个属性能够获取底层数据的数组表示,这意味着返回的是数组的副本而非视图。这种方法非常适合在...

    基于模板实现的高效多维度Array类(含测试代码)

    本主题将探讨一个基于模板实现的高效多维度Array类,该类旨在提供灵活、高性能的多维数组操作。 首先,让我们理解模板编程。模板是C++中的一种泛型编程工具,它允许我们编写通用的代码,适用于多种数据类型。模板...

    init_array教程

    这通常通过自定义链接器脚本实现,或者在编译时使用 `-Wl,-init` 和 `-Wl,-fini` 选项指定初始化和结束函数。 3. 使用GCC属性:`__attribute__((section(".init_array")))` 是GCC的一个特性,它将`my_init`函数放置...

    c++ 矩阵转换

    定义一个方阵类Array,实现对方阵进行顺时针90度旋转。 定义一个方阵类Array,实现对方阵进行顺时针90度旋转。如图所示。 具体要求如下: (1)私有数据成员 l int a[4][4]:用于存放方阵。 (2)公有成员函数 ...

    delphi中String,PChar,PByte,Array of Char,Array of Byte 互相转换

    ### Delphi中String,PChar,PByte,Array of Char,Array of Byte 互相转换 在Delphi编程语言中,字符串和其他与字符相关的数据类型之间的转换是常见的需求。本篇文章将详细介绍如何在这些数据类型之间进行转换,...

    Phased Array Antennas Floquet Analysis

    标题“Phased Array Antennas Floquet Analysis”表明本书主要讨论的主题是关于相控阵天线的Floquet分析。相控阵天线是一种由许多小天线元素组成的阵列,这些元素能够单独或集体地调整其相位和幅度来控制电磁波的...

    Array AG 9.4 CLI Handbook

    标签“vpu ag array”可能指向设备所使用的某种特定硬件组件或技术,如虚拟处理单元(VPU)在Array设备中的应用,或者与Array AG 9.4相关的特殊技术标识。由于内容部分中只提供了版权声明和警告,我们无法从这些信息...

    双数组 DoubleArray Trie树的数组实现 双数组字典

    Trie树是搜索树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,是中文匹配分词算法中词典的一种常见实现。它本质上是一个确定的有限状态自动机(DFA),每个节点代表自动机的一个状态。在...

    Allegro中VIA ARRAY使用教程(英文)

    在电子设计领域,Allegro是一款广泛使用的PCB设计软件,其强大的功能之一是通过VIA ARRAY工具来创建和管理多层板上的过孔阵列。这个教程将深入讲解如何利用Allegro进行各种类型的VIA ARRAY设置,包括Single Sided、...

    Android的string-array数据源简单使用

    例如,可以结合`&lt;integer-array&gt;`或`&lt;color-array&gt;`来实现更复杂的数据结构。例如,如果你需要每个字符串对应的序号,可以这样做: ```xml &lt;integer-array name="example_indices"&gt; &lt;item&gt;0 &lt;item&gt;1 &lt;item&gt;2 ...

    Ext.Array例子

    首先,我们来看`Ext.Array`的一些基本操作: 1. **包含检查**:`contains()` 方法用于检查数组是否包含特定的元素。例如,`Ext.Array.contains(array, item)` 返回`true`或`false`。 2. **添加元素**:`add()` ...

Global site tag (gtag.js) - Google Analytics