ruby - Ruby 中的管道符号是什么意思?

标签 ruby syntax

Ruby 中的管道符号是什么意思?

我正在学习 Ruby 和 RoR,来自 PHP 和 Java 背景,但我不断遇到这样的代码:

def new 
  @post = Post.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml { render :xml => @post }
  end
end

|format| 部分在做什么? PHP/Java 中这些管道符号的等效语法是什么?

最佳答案

它们是产生给 block 的变量。

def this_method_takes_a_block
  yield(5)
end

this_method_takes_a_block do |num|
  puts num
end

输出“5”。一个更神秘的例子:

def this_silly_method_too(num)
  yield(num + 5)
end

this_silly_method_too(3) do |wtf|
  puts wtf + 1
end

输出是“9”。

关于ruby - Ruby 中的管道符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665576/

相关文章:

Ruby:读取两个文件

python - 对象与类变量

powershell - 语法问题 sn 未添加到 Set-ADUser 脚本的电子邮件字符串变量

ruby - 使用 Ruby 的非对称确定性加密 (RSA)

ruby-on-rails - Nginx 乘客不服务 Rails 应用程序

assembly - Intel x86 汇编语法中寄存器上的括号

google-sheets - 如何将谷歌表格上超过 1 个单元格的数据转置为只有 1 个单元格?

c# - 如何创建一个 int 数组列表?

ruby - 无法使用 Ruby 连接到 postgresQL

ruby-on-rails - Rails 新命令不起作用