有人可以帮助我理解这一行代码吗?

时间:2019-09-18 04:56:37

标签: ruby-on-rails ruby iterator

我正在使用每个和产量进行实验

我几乎完成了实验,并且了解了一下,只是需要帮助才能完全掌握这一点。

yield(collection [i])

def my_collect(array)
  i = 0
  collect = []
  while i < array.length
    collect << yield(array[i])
    i+=1
  end
  collect
end

1 个答案:

答案 0 :(得分:3)

yield关键字(与块关联)允许在方法调用期间传递一组附加指令。

此机制使您可以根据需要自定义方法。

什么是封锁?

块是Ruby方法语法的一部分。 这意味着,当Ruby解析器识别出一个块时,该块将与调用的方法相关联,并从字面上替换该方法中的yields。

我还建议您将while循环替换为.each

def my_collect(array)
  collect = []
  array.each { |a| collect << yield(a) }
  collect
end

my_collect([1, 2, 3]) { |n| n + 1 }  produces  ->  [2, 3, 4]