日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深入解讀RubyContinuations

通過對(duì)Ruby語(yǔ)言的學(xué)習(xí),我們可以知道,它是一種靈活性較強(qiáng)的腳本語(yǔ)言。但是其中也不乏難以理解的內(nèi)容,比如Ruby Continuations。#t#

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了靈壽免費(fèi)建站歡迎大家使用!

Ruby Continuations可以處理非局部的跳轉(zhuǎn),它保存了返回地址和執(zhí)行的環(huán)境,和c中的setjmp和longjump類似,但它保存了更多的信息:

axgle舉的曹操的例子很形象,我們拿過來看看:

曹操(caocao)被譽(yù)為“古代輕功***的人 ”,是因?yàn)椤罢f曹操,曹操到”這句名言。在ruby中,曹操的這種輕功被稱為callcc.

 
 
 
  1. callcc{|caocao| 
  2. for say in ["曹操","諸葛亮","周瑜"] 
  3. caocao.call if say=="曹操" 
  4. puts say #不會(huì)輸出,因?yàn)椴懿僖呀?jīng)飛出去了 
  5. end 
  6. }

“曹操”飛到這里來了(跳出了callcc的block,緊跟在這個(gè)block后面,繼續(xù)執(zhí)行下面的ruby代碼),puts "到" callcc里的caocao是個(gè)"延續(xù)"(Continuation)對(duì)象.這個(gè)對(duì)象只有名叫“call"的這樣一個(gè)方法。當(dāng)執(zhí)行了caocao.call后,caocao就會(huì)飛到callcc的塊(block)后面,讓ruby繼續(xù)執(zhí)行其下面的代碼。

我上面給出的是一個(gè)從塊里頭”飛“到塊外面的例子;下面是Programming Ruby給出的從代碼后面”飛“到代碼前面的例子:

 
 
 
  1. arr = [ "Freddie", "Herbie", 
    "Ron", "Max", "Ringo" ] 
  2. callcc{|$cc|}#下面的$cc.call
    如果被執(zhí)行,就會(huì)飛回到這里(callcc的塊之后)。 
  3. puts(message = arr.shift) 
  4. $cc.call unless message =~ /Max/

以上就是對(duì)Ruby Continuations的詳細(xì)介紹。


本文標(biāo)題:深入解讀RubyContinuations
網(wǎng)站鏈接:http://www.5511xx.com/article/cooejsj.html