ruby代码块
#代碼塊是Proc 類的實例
#使用如下:
def runputs "start running"yieldyieldputs "finish"
endrun{ puts "runing" } #當代碼塊在一行能容納的時候 ,一般用花括號包圍
i=0
run do #當代碼塊語句多行的時候i += 1puts i
end#代碼塊也能傳參數
def run2(arg)yield arg
endrun2 ("cai") {|name| puts "hello #{name}"}
i=0
run2 2 do |x|i = i+xputs i
end#代碼塊的運用測試
#運用代碼塊實現數組each 的迭代功能
puts "====== 運用代碼塊實現迭代 ===="
class Array #給數組追加方法 for_eachdef for_eachfor i in (0...self.length)yield self[i] #循環調用代碼塊來進行迭代
endend
end["a","b","c"].for_each{ |i| puts i}#運用Proc 類來生成代碼塊
block = Proc.new{ |name| puts "hello #{name}"}
def method(name,&block)block.call name
end
method ("cai",&block)#Proc 與 lambda
def proc_testf = Proc.new{ return "jump from Proc block" }f.callreturn "proc_test return" #不會執行
enddef lambda_testf = lambda { return "jump from lambda block" }f.callreturn "lambda_test return" #會執行
endputs proc_test
puts lambda_test
?
轉載于:https://www.cnblogs.com/laoquans/p/3181988.html
總結
- 上一篇: CentOS 升级PHP
- 下一篇: 虚拟件零成本控制