我不明白为什么以下引发异常:
class X
def to_s
"x"
end
end
s = ""
s << X.new
# --> TypeError: can't convert X into String
Run Code Online (Sandbox Code Playgroud)
毕竟'to_s'应该将X转换为String.
Ruby核心不会自动调用短转换; 这就是长时间的转换.长转换适用于与转换目标非常相似的事物,而不是仅仅具有目标类型表示的事物.
使用: to_str
也就是说,如果您添加def to_str; "x"; end到您的类,<<表达式将使用自动转换.
| 归档时间: |
|
| 查看次数: |
1641 次 |
| 最近记录: |