Ruby 中代码块、符号与变量的深入解析
1. 代码块与实例变量
代码块在 Ruby 中使用变量的方式是一个不太明显但重要的特性。如果将代码块视为无名函数或方法,那么它应该能够包含自己的局部变量,并访问所属对象的实例变量。
1.1 实例变量的作用
以下是一个示例代码,展示了代码块如何处理实例变量:
# closures1.rb
aClos = lambda{
@hello << " yikes!"
}
def aFunc( aClosure )
@hello = "hello world"
aClosure.call
end
aFunc(aClos) #<= @hello = "hello world yikes!"
aClos.call #<= @hello = "hello world yikes! yikes!"
aClos.call #<= @hello = "hello world yikes! yikes! yikes!"
在上述代码中, @hello 是一个实例变量,存在于对象的作用域内。当运行 Ruby 程序时,会自动创建一个名为 main 的对象,因此在该对象内创建的实例变量对其内部的所有内容都是可用的。
1.2 代码块在不同对象方法中的行为
接下来,我们将探讨如果将代码块传递给另一个对象的方法会发生什么。以下是相关代码:
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



