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