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