func(@param) do |f|
some code here
end
和
@param.each do |sth|
some code here
end
什么是绝对值符号在这里做?我不明白这两段代码。
func(@param) do |f|
some code here
end
和
@param.each do |sth|
some code here
end
什么是绝对值符号在这里做?我不明白这两段代码。
这是块中的局部变量,让线路:
@param.each do |sth|
你遍历@param
权,以及在@param
每个项目被称为单独为sth
。
所以如果@param
是指含有一个阵列的数字
[1,3,5,4]
在第一次迭代sth
将1
,然后3
,然后5
,然后4
。
也是一样的:
func(@param) do |f|
除了现在局部变量称为f
!你可以称它为任何你想要的,甚至|ihavenoideawhatimdoing|
它表示实例变量。你经常看到它,如果人们使用attr_互换*方法,如attr_accessor,这使得@someattr和self.some_attr相当于实例方法。
它不表示实例变量,并且与'attr *':'@ isAnInstanceVariable'无关。 – 2013-02-28 01:13:54
它是一个块的参数。该块是do和end之间的代码的一部分。该代码块可以使用f
或sth
,在您的示例中该代码块可能已由func
或each
设置。
A tutorial on Ruby blocks可能会有所帮助。
Labmda calculus - 更抽象,但它是我第一次看到这些东西的上下文。
我不会引入lambda微积分..但是,这个答案确实说明了它是什么(或者说,它引入了什么)..还有更好的可用块的教程。 – 2013-02-28 01:17:37
是的,lambda微积分超过了顶端,而不是一个很好的比较,因为与lambda表达式不同,块可以有多个参数。更好的条款将是匿名函数或一流的函数。 – windywindy 2013-02-28 01:26:18
这只是引入块参数的语法(类似于括号在适当位置引入方法参数的方式)。搜索“红宝石块教程”。 – 2013-02-28 01:11:54
我不明白这个问题是如何过于本地化的,当它与其他所有的“Ruby中的......意味着什么”问题一样的时候。 – DGM 2013-03-02 04:35:59