ruby-on-rails - 有人可以帮我理解这一行代码吗?

标签 ruby-on-rails ruby iterator

我正在使用 each 和 yield 做一个实验

我几乎完成了实验,并且对它有所了解,只是需要帮助才能完全掌握这一行。

产量(集合[i])

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

最佳答案

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

此机制允许您根据需要自定义方法。

什么是 block ?

block 是 Ruby 方法语法的一部分。 这意味着当一个 block 被 Ruby 解析器识别时,它将与调用的方法相关联,并逐字替换方法中的 yield。

我还建议您将 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]

关于ruby-on-rails - 有人可以帮我理解这一行代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57985329/

相关文章:

ruby-on-rails - 使用 Ruby on Rails API 和 React 通过 Google 登录

ruby-on-rails - 在一页上创建目标和任务的 Rails 待办事项列表应用程序 - 缺少参数

ruby-on-rails - 从关联模型中获取值(value)

java - 如何从迭代器 next() 方法返回的对象中获取信息?

c++ - 迭代器和模板

ruby-on-rails - 发送多个字符串参数以在 Rails 中发布请求

Ruby Rails - Assets 的 RoutingError

ruby - 使用线程和 ruby Mechanize 安全吗?

c++ - 迭代器算术

ruby-on-rails - 如何在安装在 vmware 中的 ubuntu 中运行 ruby​​ on rails 程序?