Integer(value)和value.to_i之间的差异

Nob*_*ita 37 ruby

给定一个像这样的字符串对象:

twohundred = "200"
Run Code Online (Sandbox Code Playgroud)

做的有什么区别:

Integer(twohundred)  #=> 200
Run Code Online (Sandbox Code Playgroud)

和:

twohundred.to_i      #=> 200
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?是否建议在另一个中使用其中一个?

pju*_*ble 49

Integer(num)ArgumentError如果num不是有效整数,则会抛出异常(您可以指定基数).

num.to_i 将尽可能多地进行转换.

例如:

"2hi".to_i 
#=> 2

Integer("2hi")
#=> throws ArgumentError

"hi".to_i
#=> 0

Integer("hi")
#=> throws ArgumentError

"2.0".to_i
#=> 2

Integer("2.0")
#=> throws ArgumentError
Run Code Online (Sandbox Code Playgroud)


bta*_*bta 10

从Ruby 文档Integer():

整数(arg,base = 0)→整数...如果arg是一个String,当省略base或等于零时,将遵循基数指示符(0,0b和0x).在任何情况下,字符串应严格遵守数字表示.此行为与String#to_i的行为不同.

换句话说,Integer("0x100") => 256"0x100".to_i => 0.