- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在学习 Ruby,我看到了一些让我有点困惑的方法,特别是 to_s
与 to_str
(同样,to_i
/to_int
, to_a
/to_ary
, & to_h
/to_hash
).我读到的内容解释说,较短的形式(例如 to_s
)用于显式转换,而较长的形式用于隐式转换。
我真的不明白 to_str
实际是如何使用的。 to_str
会定义字符串以外的东西吗?你能给出这个方法的实际应用吗?
最佳答案
首先请注意,所有这些都适用于每对“短”(例如 to_s
/to_i
/to_a
/to_h
) 与“long”(例如 to_str
/to_int
/to_ary
/to_hash
)强制方法在 Ruby 中(对于它们各自的类型),因为它们都具有相同的语义。
它们有不同的含义。你不应该实现 to_str
除非你的对象表现像一个字符串,而不是仅仅被一个字符串表示。实现 to_str
的唯一核心类是 String 本身。
来自 Programming Ruby(引自 this blog post,值得一读):
[
to_i
andto_s
] are not particularly strict: if an object has some kind of decent representation as a string, for example, it will probably have ato_s
method… [to_int
andto_str
] are strict conversion functions: you implement them only if [your] object can naturally be used every place a string or an integer could be used.
Older Ruby documentation from the Pickaxe有这样的话:
Unlike
to_s
, which is supported by almost all classes,to_str
is normally implemented only by those classes that act like strings.
例如,除了Integer , 两者 Float & Numeric实现 to_int
(to_i
相当于 to_str
),因为它们都可以很容易地替换为 Integer(它们实际上都是数字)。除非你的类与 String 有类似的紧密关系,否则你不应该实现 to_str
。
关于ruby - Ruby 中的 to_s 与 to_str(以及 to_i/to_a/to_h 与 to_int/to_ary/to_hash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182052/
我使用 String.to_int,有时会出错,例如当字符串不是 int 的表示形式时。我想捕获这些错误,或者在使用函数之前测试参数。一些想法? 谢谢 最佳答案 嗯,有人可能会争辩说,如果 stdli
我have a class它公开了一个字符串值和一个 int 值(分别是命令输出和退出代码)。除了通过 to_s 和 to_i 公开它们之外,我还使用 to_str 和 to_int,如下所示: cl
Kernel::Integer 和 Kernel::String 都通过首先尝试调用“long”方法(to_int 和to_str),然后是“短”方法(分别为to_i 和to_str)。两种方法都检查
我正在学习 Ruby,我看到了一些让我有点困惑的方法,特别是 to_s 与 to_str(同样,to_i /to_int, to_a/to_ary, & to_h/to_hash ).我读到的内容解释
我是一名优秀的程序员,十分优秀!