下面| |
所谓的profile
是什么意思,它是什么意思,为什么它在do
之后呢?我认为do
之后是循环块左右。
ticks = get_all[0...MAX].map do |profile|
答案 0 :(得分:1)
它就像一个foreach,因此profile在每个函数调用中都是一个不同的值,get_all中每个元素一个函数调用。
看到这个:
my_array = [:uno, :dos, :tres]
my_array.each do |item|
puts item
end
答案 1 :(得分:1)
它们是定义块的语法的一部分。我想解释它的方式是管道看起来像一个幻灯片,管道内的变量“滑动”到它们下面的代码块中。
管道中的变量基本上可用于块。在迭代的情况下,变量将表示迭代的任何元素。
答案 2 :(得分:0)
我将使用此示例尝试向您解释这个概念。
friends = ["James", "Bob", "Frank"]
friends.each { |friend| puts friend }
James
Bob
Frank
所以在这里,我们有一系列的朋友:詹姆斯,鲍勃和弗兰克。
为了迭代它们,我们在数组上调用#each方法。该方法将从我的数组中的第一个项开始,并在其上调用块。
基本上,我正在迭代的项目被传递给两个管道字符内的变量。您可以将其称为|buddy|
并将该块更改为{ |buddy| puts buddy }
,它仍会执行相同的操作。
答案 3 :(得分:0)
管道字符分隔块定义的参数列表,就像括号分隔方法定义的参数列表一样。所以,在这段代码中:
def foo(bar, baz) end
some_method_that_takes_a_block do |bar, baz| end
括号和管道具有完全相同的目的。