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
是-AString
例如,看看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
是-AString
例如,看看Ruby core库中的哪些类实际实现了类型转换方法:
- 实现
到_ary
的唯一类是数组本身
- 实现
到\u hash
的唯一类是hash
本身和
- 实现
到_str
的唯一类是String
本身
这应该向您表明,将实现到_str
是一件非常严重的事情,不应轻率行事
唯一的转换方法不是简单的无运算实现,而是到int
,它也通过浮点
和数值
实现。实际上,我认为这是一个错误,因为有无限多的Float
s不是Integer
s。而Numeric
是Integer
的一个超类,所以说每个Numeric
都是一个Integer
就更奇怪了。你应该将你的答案作为实际答案发布,然后接受它,因此,此问题在问题列表中显示为已回答。您应该将您的答案作为实际答案发布,然后接受它,因此此问题在问题列表中显示为已回答。Symbol还实现(或实现)到_int
。我不知道这是不是不可行。如果你在做整数(:yikes)
,那可能是!符号还实现(或实现)到_int
。我不知道这是不是不可行。如果你在做整数(:yikes)
,那可能是!