当前位置:  开发笔记 > 编程语言 > 正文

Ruby中的那些管道符号是什么?

如何解决《Ruby中的那些管道符号是什么?》经验,为你挑选了4个好方法。

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中这些管道符号的等效语法是什么?



1> August Lille..:

它们是产生块的变量.

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".



2> Martin Josef..:

起初这对我来说也很奇怪,但我希望这个解释/ walkthru可以帮助你.

文档以一种非常好的方式触及了主题 - 如果我的答案没有帮助,我相信他们的指南会.

首先,通过键入irbshell并点击来启动Interactive Ruby解释器Enter.

输入类似的内容:

the_numbers = ['ett','tva','tre','fyra','fem'] # congratulations! You now know how to count to five in Swedish.

只是为了让我们有一个阵列可以玩.然后我们创建循环:

the_numbers.each do |linustorvalds|
    puts linustorvalds
end

它将输出所有数字,以换行符分隔.

在其他语言中,你必须写下这样的东西:

for (i = 0; i < the_numbers.length; i++) {
    linustorvalds = the_numbers[i]
    print linustorvalds;
}

需要注意的重要事项是,|thing_inside_the_pipes|只要您始终如一地使用它,它就可以是任何东西.并且理解它是我们正在谈论的循环,这是我直到后来才得到的东西.


在一些"其他语言"(Python)中,你可以在in_numbers中为linustorvalds编写`print linustorvalds`.或许更直观一点.
完全正确.我选择了C风格的语法,因为我怀疑有更多人来ruby熟悉这一点,但我希望他们也能阅读你的评论.

3> Philip Durbi..:
@names.each do |name|
  puts "Hello #{name}!"
end

在http://www.ruby-lang.org/en/documentation/quickstart/4/附有此解释:

each是接受一个代码块的方法然后运行的代码用于在列表中的每个元素块之间,以及在比特doend就是这样一个块.块就像匿名函数或lambda.管道字符之间的变量是此块的参数.

这里发生的是,对于列表中的每个条目,name绑定到该列表元素,然后puts "Hello #{name}!"使用该名称运行表达式.



4> unwind..:

从该代码doend限定的Ruby块.该单词format是块的参数.该块与方法调用一起传递,被调用的方法可以yield赋值给块.

有关详细信息,请参阅Ruby上的任何文本,这是Ruby的核心功能,您将一直看到它.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有