Ruby:使用类似Hash的语法糖实现类

时间:2016-11-11 23:37:15

标签: ruby

我想创建一个class MyList,我可以使用Array语法进行初始化,例如:

ml = MyList.new [1, 2, 3]

我可以通过实现函数self.[]来实现它,如下面的摘录:

class MyList
  def self.[] *array
   self.new array
  end

  def initialize enum = nil, &block
   # ....
  end
end

如何实现class MyHash,初始化为

mh = MyHash.new { 1 => 1, 2 => 2}
# mh =  { 1 => 1, 2 => 2} # post edit: old version, that caused confusion on this question.

我的课程中是否有一种方法,以及如何实现?如果没有,{ a =>b }符号有什么特别之处?

重复后标记解释 - 问题没有得到很好说明,但我的意图并未重复。事实上,就像我一样

ml = MyList.new [1, 2, 3]

我的意思是:

mh = MyHash.new { 1 => 1, 2 => 2}

已经回答过自己,这可能是不可能的,因为Ruby会混淆一个被参数传递的块,但我可以

mh = MyHash.new ({ 1 => 1, 2 => 2})

定义:

class MyHash

  def initialize hash
   # ....
  end
end

0 个答案:

没有答案