在Ruby中区分十进制数的索引和数组内的整数?

arc*_*hie 3 ruby arrays

由于Ruby进行类型转换,如何正确获取索引?

我希望这返回1

[1,2.0,2,3].index(2.0)
#=> 1
Run Code Online (Sandbox Code Playgroud)

我想这回来2

[1,2.0,2,3].index(2)
#=> 1
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 5

使用块eql?是一种方式:

[1,2.0,2,3].index {|e| e.eql? 2.0}
#=> 1
[1,2.0,2,3].index {|e| e.eql? 2}
#=> 2
Run Code Online (Sandbox Code Playgroud)

与之不同==,仅当接收者和参数具有相同的类型和相等的值时才eql?返回true.所以2 == 2.0返回true2.eql? 2.0返回false.