Ruby 整数方法之间的区别
有什么区别
10.6.to_i
和 和
10.6.to_int
?
What is the difference between
10.6.to_i
and
10.6.to_int
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有什么区别
10.6.to_i
和 和
10.6.to_int
?
What is the difference between
10.6.to_i
and
10.6.to_int
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
没有区别。 它们是同义的。
There is no difference. They are synonymous.
此处对此进行了很好的解释:
首先, to_i 或 to_int 都不意味着做一些比其他更奇特的事情。 一般来说,这两种方法在实现上没有太大区别,只是在向外界宣布的内容上有所不同。 to_int 方法通常与条件表达式一起使用,应该这样理解:“这个对象在任何时候都可以被认为是一个真正的整数吗?”
to_i 方法通常用于进行实际的转换,应该这样理解:“请给我这个对象的最准确的整数表示”,
例如,String 是一个实现了 to_i 但没有实现 to_int 的类。 这是有道理的,因为字符串本身不能被视为整数。 然而,在某些情况下,它可以具有整数形式的表示。 如果我们写 x = “123”,我们可以很好地执行 x.to_i 并继续使用生成的 Fixnum 实例。 但它之所以有效,是因为 x 中的字符可以转换为数值。 如果我们写:x =“外面的马很有趣”怎么办? 没错,字符串不能始终被视为整数。
This is excelently explained here:
First of all, neither to_i or to_int is meant to do something fancier than the other. Generally, those 2 methods don’t differ in their implementation that much, they only differ in what they announce to the outside world. The to_int method is generally used with conditional expressions and should be understood the following way : “Is this object can be considered like a real integer at all time?”
The to_i method is generally used to do the actual conversion and should be understood that way : “Give me the most accurate integer representation of this object please”
String, for example, is a class that implements to_i but does not implements to_int. It makes sense because a string cannot be seen as an integer in it’s own right. However, in some occasions, it can have a representation in the integer form. If we write x = “123″, we can very well do x.to_i and continue working with the resulting Fixnum instance. But it only worked because the characters in x could be translated into a numerical value. What if we had written : x = “the horse outside is funny” ? That’s right, a string just cannot be considered like an Integer all the time.