你的例子中,作为判断对象的是一个空数组,不执行后面的代码,也没有一个元素是false的,所以返回的是true,这是我的见解
在 ruby 中,{|args| statements} 叫做 匿名函数,就是没有名字的小型函数。然后 each_byte 是一个方法,它接收一个可调用对象。有时候左花括号可以用 do 代替,有花括号用 end 代替,就是
do |args|
statements
end
这种形式。
以后有问题可以去 stackoverflow上面搜。这里有个 提问,与你的类似。
xs = [1, 3, 2, 4]original_indexes = xs.map.with_index.sort.map(&:last)
#=> [0, 2, 1, 3]
我解释下:
1)with_index 之后产生一个 二维数组的迭代器 [ [xs[0], 0], [xs[1], 1], [xs[2], 2] ... ]
2)sort 函数应用在二维数组中时,似乎是按照第一个元素进行排序
3)排序之后的二维数组,取出每个数组的last就是索引值,由于这时候已经排过序,所以就是希望的答案了。