3

可能重复:
在 Ruby 中,垂直线是什么?

这个问题似乎是谷歌证明的,我不知道 Ruby。

比较模型描述中行尾的不同存在|f|会导致内容不显示。我只是想修复一个页面中的一个错误,该错误不提供对表格中某些信息的访问。

||= 在 Ruby 中做了什么||似乎没有帮助。

这是损坏的 .rb 文件中的可疑代码:

comma :show_mytable do |f|
    table2 :field2
    table3 :field3
end

但这似乎有效,激活时显示所需的字段:

comma :show_mytable do
    table2 :field2
    table3 :field3
end

可以|f|阻止输出显示吗?

4

2 回答 2

5

在您的代码中,您将两个变量传递给该comma方法。第一个是被调用的符号:show_mytable,第二个是块。它与条件赋值的 ||= 语法无关。

以下是如何在 ruby​​ 中使用块的示例:

array = [1, 2, 3, 4]
array.each do |element|
  element + 1
end 
  #=> 2 3 4 5

当你使用循环时(each在这种情况下),你可以传递一个变量(element)给你一种方法来引用循环中的当前元素。

你也可以使用花括号代替doandend像这样:

array = [1, 2, 3, 4]
array.each { |e| e + 1 } 
  #=> 2 3 4 5

由于您在这里没有遍历任何内容,因此我看不出您|f|在示例中可能需要的任何理由。

于 2012-10-02T16:30:17.970 回答
2

|f|是您的块的参数。使用这几行代码,您可以调用comma使用两个参数调用的方法。第一个是符号:show_mytable,第二个是你在 thedo和 the之间的块end

使用包含在管道之间的变量名称列表,您可以指定块的参数列表。块就像一个匿名函数,可以使用任意数量的参数调用它,ruby 会尝试最好地匹配它们。

于 2012-10-02T16:28:38.490 回答