ruby学习--block

 1 #当前块
 2 class Block
 3     def a_method
 4         return yield if block_given?
 5         'no block'
 6     end
 7 end
 8 obj=Block.new
 9 puts "#{obj.a_method}"
10 puts "#{obj.a_method {"here's a block!"}}"
 1 #闭包
 2 class Greeter
 3     def initialize(name)
 4         @name=name
 5     end
 6     def name
 7         @name
 8     end
 9     def name=(new_name)
10         @name=new_name
11     end
12 end
13 g=Greeter.new("Barney")
14 puts g.name     
15 g.name="Betty"
16 puts g.name       
 1 #切换作用域
 2 v1=1
 3 class MyClass
 4     v2=2
 5     local_variables                    
 6     #puts "#{local_variables}"       #[:v2]  
 7     def my_method
 8         v3=3
 9         local_variables
10         #puts "#{local_variables}"    #[:v3]
11     end
12     local_variables
13     #puts "#{local_variables}"        #[:v2]
14 
15 end
16 obj=MyClass.new
17 obj.my_method                        #[:v3]
18 puts "#{local_variables}"            #[:v1, :obj]