Ruby中的“do ||”是什么意思?

41

在阅读一些Ruby代码时,我看到了这个:

create_table :talks do |t|

这个符号 |variable| 是什么意思?它有什么作用?
此外,我在哪里可以找到有关这些特定主题的帮助,例如 | |#{} 等等?

很难确定哪些关于Ruby块语法的问题最好被视为重复,我建议使用这个搜索词代替:http://stackoverflow.com/search?q=%5Bruby%5D+blocks - Phrogz
我在哪里可以找到这些特定主题的帮助?这些都是非常基础、核心的Ruby知识,所以请至少阅读"Programming Ruby"的在线版本。虽然它有点过时了,但这些基础知识仍然适用。 - the Tin Man
2个回答

26

块的定义方式类似于def methodname(arg1, arg2),用于为代码块定义参数。

关于块的详细解释可以参考Robert Sosinski的文章


1
此文章有更好的解释。 - Jin Lim

22

您可能还会听到它们被称为目标点。它们本质上是命名参数,可用于迭代集合中的数据。例如,对于一个数组:

# Print 1 2 3 4
[1,2,3,4].each do |e|
    print "#{e} "
end

或者使用键值对映射,你需要在目标位置之间有多个参数

m = {"ruby" => "rails", "groovy" => "grails", "scala" => "lift", "java" => "spring"}
m.each do |lang, framework|
    # print the keys first - "ruby groovy scala java"
    print "#{lang} "
    # print the values second - "rails grails lift spring" 
    print "#{framework} "
end

你的问题听起来更加特定于Ruby语言而非Ruby on Rails。我建议查看以下链接:


2
  1. 没有人称它们为“目标柱”。
  2. 它们不是命名参数。
  3. 你不是在“迭代它们”。
- horseyguy
2
  1. 有争议的;
  2. 对于单词的纠缠不清;Ruby文档将它们称为参数,而非命名参数;
  3. 也许 "迭代" 不是100%正确的术语,但前提仍然相同 - 代码块会针对集合中的每个元素进行调用。
- rynmrtn
https://blog.teamtreehouse.com/ruby-arrays "goalposts" (约2006年)。 - Todd Sprang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接