Ruby 如何消除打字错误

Ruby 如何消除打字错误,ruby,Ruby,我上课了 class A def to_s 'string' end def inspect 'string' end end 试着做这样的事情 a = A.new 'somestring' + a 错误为“在”+:无法将转换为字符串(TypeError) 有没有办法解决这个问题 另外,使用“somestring”+a.to_不是一个选项 找到答案。所需的to str方法。\to s用于将对象表示为字符串。在本例中,您需要将对象转换为字符串,因为字符串#+

我上课了


class A
  def to_s
    'string'
  end
  def inspect
    'string'
  end
end
试着做这样的事情


a = A.new
'somestring' + a
错误为“在”+:无法将转换为字符串(TypeError)

有没有办法解决这个问题

另外,使用“somestring”+a.to_不是一个选项

找到答案。所需的to str方法。

\to s
用于将对象表示为
字符串。在本例中,您需要将对象转换为
字符串
,因为
字符串#+
只处理
字符串
s。在Ruby中,类型转换是通过
到X
方法的三个字母形式完成的,即
到int
到ary
到散列
(有人不能数到三…,
到str
等等

因此,您需要将
实现为_str
,以使其正常工作

但是,如果您的对象实际上是一个字符串,那么您应该只对_str
实现
!如果是其他内容,则不能实现
to_str
,而是让客户端使用
to_s
将其显式表示为字符串

基本上,在Ruby中实现
to_str
就像继承Java中的
String
:这意味着
A
是-A
String

例如,看看Ruby core库中的哪些类实际实现了类型转换方法:

  • 实现
    到_ary
    的唯一类是
    数组本身
  • 实现
    到\u hash
    的唯一类是
    hash
    本身和
  • 实现
    到_str
    的唯一类是
    String
    本身
这应该向您表明,将
实现到_str
是一件非常严重的事情,不应轻率行事

唯一的转换方法不是简单的无运算实现,而是
到int
,它也通过
浮点
数值
实现。实际上,我认为这是一个错误,因为有无限多的
Float
s不是
Integer
s。而
Numeric
Integer
的一个超类,因此说每个
Numeric
都是一个
整数就更奇怪了。

\u s
是用来将对象表示为
字符串的。在本例中,您需要将对象转换为
字符串
,因为
字符串#+
只处理
字符串
s。在Ruby中,类型转换是通过
到X
方法的三个字母形式完成的,即
到int
到ary
到散列
(有人不能数到三…,
到str
等等

因此,您需要将
实现为_str
,以使其正常工作

但是,如果您的对象实际上是一个字符串,那么您应该只对_str
实现
!如果是其他内容,则不能实现
to_str
,而是让客户端使用
to_s
将其显式表示为字符串

基本上,在Ruby中实现
to_str
就像继承Java中的
String
:这意味着
A
是-A
String

例如,看看Ruby core库中的哪些类实际实现了类型转换方法:

  • 实现
    到_ary
    的唯一类是
    数组本身
  • 实现
    到\u hash
    的唯一类是
    hash
    本身和
  • 实现
    到_str
    的唯一类是
    String
    本身
这应该向您表明,将
实现到_str
是一件非常严重的事情,不应轻率行事


唯一的转换方法不是简单的无运算实现,而是
到int
,它也通过
浮点
数值
实现。实际上,我认为这是一个错误,因为有无限多的
Float
s不是
Integer
s。而
Numeric
Integer
的一个超类,所以说每个
Numeric
都是一个
Integer
就更奇怪了。

你应该将你的答案作为实际答案发布,然后接受它,因此,此问题在问题列表中显示为已回答。您应该将您的答案作为实际答案发布,然后接受它,因此此问题在问题列表中显示为已回答。Symbol还实现(或实现)
到_int
。我不知道这是不是不可行。如果你在做
整数(:yikes)
,那可能是!符号还实现(或实现)
到_int
。我不知道这是不是不可行。如果你在做
整数(:yikes)
,那可能是!