ruby学习--block

时间:2023-03-10 05:08:54
ruby学习--block
 #当前块
class Block
def a_method
return yield if block_given?
'no block'
end
end
obj=Block.new
puts "#{obj.a_method}"
puts "#{obj.a_method {"here's a block!"}}"
 #闭包
class Greeter
def initialize(name)
@name=name
end
def name
@name
end
def name=(new_name)
@name=new_name
end
end
g=Greeter.new("Barney")
puts g.name     
g.name="Betty"
puts g.name      
 #切换作用域
v1=1
class MyClass
v2=2
local_variables
#puts "#{local_variables}"   #[:v2]  
def my_method
v3=3
local_variables
#puts "#{local_variables}" #[:v3]
end
local_variables
#puts "#{local_variables}" #[:v2] end
obj=MyClass.new
obj.my_method #[:v3]
puts "#{local_variables}" #[:v1, :obj]