Ruby:定义自己的转换方法/协议

Ruby:定义自己的转换方法/协议,ruby,Ruby,我喜欢使用Ruby的内置核心转换,比如 Integer("2") Float("2.22") Pathname("/etc/hosts") 但是如何为类定义自己的转换方法呢?我有以下课程 class Foobar def initialize # ... do some work end end 我想要一个方法Foobar(“我的值”),它可以将字符串my value转换成一个Foobar类(不管你怎么做),或者在输入不合适的情况下抛出一个ArgumentError 你知道怎

我喜欢使用Ruby的内置核心转换,比如

Integer("2")
Float("2.22")
Pathname("/etc/hosts")
但是如何为类定义自己的转换方法呢?我有以下课程

class Foobar
  def initialize
    # ... do some work
  end
end
我想要一个方法
Foobar(“我的值”)
,它可以将字符串
my value
转换成一个
Foobar
类(不管你怎么做),或者在输入不合适的情况下抛出一个
ArgumentError


你知道怎么做吗?

这些“核心转换”实际上是命名为适当类的方法,在
内核
模块中定义,例如:。你的问题不清楚。你是在问如何在Ruby中定义一个方法吗?你如何提出一个例外?如何从字符串初始化对象?不,我的问题不清楚。正如您在上面所读到的,我正在询问如何为特定类定义转换方法/协议。我不知道,这些方法是在Ruby的
内核
模块中定义的,而不是在类本身中定义的@sawa和@marek完美地回答了这个问题。在进行向下表决之前,请仔细阅读。按照ruby style guide的建议,在形式参数周围添加了括号。您应该添加
module\u function:Foobar
,以将其定义为全局函数。
module Kernel
  def Foobar(string)
    ...
  end
end