You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用class_eval时如何定义[]类方法 实现quaternion gem数组转四元数

错误原因

Ruby中定义[]运算符类方法时,方法名是[],参数需要放在方法名后紧跟的圆括号内,你写的def self.[ary]不符合语法规则。

适配原需求的正确实现(传入数组创建实例)

Quaternion.class_eval do
  def self.[](ary)
    Quaternion.new(*ary)
  end
end

调用方式为Quaternion[[1, 2, 3, 4]],传入数组即可生成对应的四元数实例。

优化实现(支持直接传多参数,更易用)

如果希望调用更简洁,不需要显式包裹数组,可以改用可变参数实现:

Quaternion.class_eval do
  def self.[](*args)
    Quaternion.new(*args)
  end
end

修改后可以直接通过Quaternion[1, 2, 3, 4]的形式创建实例,更符合常用的运算符调用习惯。

内容的提问来源于stack exchange,提问作者Obromios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:42:04