2

例如

func(@param) do |f|
    some code here
end

@param.each do |sth|
    some code here
end

绝对值符号在这里有什么作用?我不明白这两段代码。

4

4 回答 4

4

它是块内的局部变量,因此对于该行:

@param.each do |sth|

您正在迭代@param正确,其中的每个项目@param都单独称为sth.

所以 if@param指的是一个包含数字的数组

[1,3,5,4]

在第一次迭代期间sth将是1,然后3,然后5,然后4

同样适用于:

func(@param) do |f|

除了现在调用局部变量f!你可以随心所欲地称呼它,甚至|ihavenoideawhatimdoing|

于 2013-02-28T01:11:35.293 回答
3

这是一个局部变量,它表示对于do...之间的代码块,定义end了变量。f

于 2013-02-28T01:08:31.180 回答
2

它是块的参数。块是 do 和 end 之间的代码部分。该代码块可以使用for sth,在您的示例中可能由funcor设置each

Ruby 块的教程可能会有所帮助。

Labmda 演算- 更抽象,但这是我第一次看到这些东西的背景。

于 2013-02-28T01:15:51.507 回答
0

它表示实例变量。如果人们使用像attr_accessor这样的attr_*方法,您经常会看到它互换,这使得@someattrself.some_attr在实例方法中等效。

于 2013-02-28T01:12:02.447 回答