使用 class_eval 时如何定义类方法:[]

Obr*_*ios 1 ruby quaternions

我正在使用四元数 gem,并希望为 :[] 运算符定义一个类方法,该方法从数组创建新的四元数。我努力了

Quaternion.class_eval do
  def self.[ary]
    Quaternion.new(*ary)
  end
end
Run Code Online (Sandbox Code Playgroud)

但这会产生语法错误。我该怎么做呢?

Sil*_*olo 5

该方法的名称[],但它仍然以通常的方式获取其参数列表

def self.[](ary)
  ...
end
Run Code Online (Sandbox Code Playgroud)

然后你称其为Quaternion[ary]