"do | |"是什么意思 在Ruby?

ped*_*ath 17 ruby

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

create_table :talks do |t|
Run Code Online (Sandbox Code Playgroud)

这个符号是什么|variable|?那是做什么的?

而且,我在哪里可以找到这些特定主题的帮助,比如| |,#{}等等?

Gar*_*eth 13

这是一种以类似的方式为块定义参数的方法 def methodname(arg1, arg2)

Robert Sosinski提供了一个很好的块解释

  • 那个博客链接给出了404,但是这里似乎有同一篇文章的副本(至少它是同一作者和日期):http://www.reactive.io/tips/2008/12/21/understanding-红宝石块-特效和 - lambda表达式 (11认同)

ryn*_*rtn 10

您也可以听到他们称为目标职位.它们本质上是命名参数,可以迭代以显示集合中的数据.例如,使用数组:

# Print 1 2 3 4
[1,2,3,4].each do |e|
    print "#{e} "
end
Run Code Online (Sandbox Code Playgroud)

或者使用键值映射,目标帖之间会有多个参数

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
Run Code Online (Sandbox Code Playgroud)

你的问题听起来比Ruby on Rails更具特定于Ruby语言.我会查看一些链接:

  • 没有人称他们为"目标职位".它们不是命名参数3.你不是在"迭代它们" (2认同)
  • 1. 有争议的;2、在言语上吹毛求疵;Ruby 文档将它们称为参数,而不是命名参数;3. 也许“迭代”不是100%正确,但前提保持不变——为集合中的每个元素调用代码块。 (2认同)