亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

解析Ruby中的Proc類及Proc的類方法Proc.new的使用介紹

2020-02-24 15:36:48
字體:
來源:轉載
供稿:網友

Proc是通過對象化塊及其上下文獲得的過程對象,可以將proc用作匿名函數,但它不導入局部變量的范圍,今天武林技術頻道小編解析Ruby中的Proc類及Proc的類方法Proc.new的使用介紹,希望對你有幫助!

在下例中,正因為Proc一直保持著局部變量的作用域,所以才能調用var變量。

ruby;">var = 1$foo = Proc.new { var }var = 2def foo $foo.callendp foo    # => 2

從生成Proc的方法中返回以后,若Proc中出現return或retry的話,會引發LocalJumpError異常。

def foo proc { return }endfoo.call# => in `call': return from proc-closure (LocalJumpError)def foo proc { retry }endfoo.call# => in `call': retry from proc-closure (LocalJumpError)

若在Proc前面加上"&"并將其傳給一個帶塊的方法時,其運作情形類似于調用塊。但從嚴格意義上講,其間還存在以下不同。

# 沒問題(1..5).each { break }# 在ruby 1.6.7, 1.8中沒問題。在1.6.8中則發生異常proc = Proc.new { break }(1..5).each(&proc)# 在ruby 1.6 中是 LocalJumpError# 在ruby 1.8 中,再次運行eachproc = Proc.new { retry }(1..5).each(&proc)#=> retry from proc-closure (LocalJumpError)

這正是Proc對象用作調用塊時的限制。

Proc.newProc.new { ... }

對塊及其context進行對象化處理之后返回結果。

若沒有給出塊的話,就會把調用該方法的方法所帶的塊轉換為Proc對象并將其返回。

def foo  pr = Proc.new  pr.call(1,2,3)endfoo {|args| p args }# => [1, 2, 3]

?

Proc.new方法深入
Proc.new對塊及其context進行對象化處理之后返回結果。

若沒有給出塊的話,就會把調用該方法的方法所帶的塊轉換為Proc對象并將其返回。

def foo  pr = Proc.new  pr.call(1,2,3)endfoo {|args| p args }# => [1, 2, 3]這與下例相同def foo yield(1,2,3)endfoo {|args| p args }# => [1, 2, 3]

若主調方法并沒有帶塊時,則引發ArgumentError異常。

def foo Proc.newendfoo# => -:2:in `new': tried to create Proc object without a block (ArgumentError)     from -:2:in `foo'     from -:4

在使用Proc.new時,若定義了Proc#initialize方法的話,就在對象初始化時調用該方法。除此以外,它和proc是相同的。

利用 Proc.new 方法,或者對 proc 方法指定塊,都可以創建代表塊的 Proc 對象。

通過調用 Proc#call 方法執行塊。調用 Proc#call 方法時的參數會作為塊變量,塊中最后一個表達式的值則為 Proc#call 的返回值。Proc#call 還有一個名稱叫 Proc#[]。

# 判斷西歷的年是否為閏年的處理leap = Proc.new do |year| year % 4 == 0 && year % 100 != 0 || year % 400 ==0end p leap.call(2000)  #=> truep leap[2013]     #=> falsep leap[2016]     #=> true

將塊變量設置為 |* 數組 | 的形式后,就可以像方法參數一樣,以數組的形式接收可變數量的參數。

double = Proc.new do |*args| args.map{|i| i * 2 }  # 所有元素乘兩倍end p double.call(1, 2, 3)  #=> [2, 3, 4]p double[2, 3, 4]     #=> [4, 6, 8]

除此以外,定義普通方法時可使用的參數形式,如默認參數、關鍵字參數等,幾乎都可以被用于塊變量的定義,并被指定給 Proc#call 方法。

 以上就是關于解析Ruby中的Proc類及Proc的類方法Proc.new的使用介紹,你可以通過上面所介紹的方法進行操作,希望這篇文章能夠幫助到你。更多關于編程的信息,可以關注武林技術頻道網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一页自拍| 成人久久一区二区| 国产精品入口夜色视频大尺度| 538国产精品视频一区二区| 久久中文字幕在线| 久久久国产精彩视频美女艺术照福利| 91国产精品视频在线| 亚洲欧洲黄色网| 青草成人免费视频| 欧美性猛交xxxx免费看漫画| 国产丝袜视频一区| 欧美黑人国产人伦爽爽爽| 国产精品久久久久久久久久| 亚洲国产成人精品一区二区| 欧洲美女7788成人免费视频| 中文亚洲视频在线| www.欧美视频| 国内自拍欧美激情| 91免费欧美精品| 国产精品一区二区av影院萌芽| 成人欧美一区二区三区在线湿哒哒| 2018日韩中文字幕| 精品久久香蕉国产线看观看亚洲| 国产成人精品亚洲精品| 91地址最新发布| 一二美女精品欧洲| 国产精品r级在线| 夜夜躁日日躁狠狠久久88av| 亚洲男人天堂2023| 欧美性生交xxxxxdddd| 日韩一区二区欧美| 国产伦精品一区二区三区精品视频| 91高清视频免费观看| 中文字幕日韩在线播放| 国产精品扒开腿做爽爽爽视频| 成人精品久久一区二区三区| 国产亚洲精品综合一区91| 福利视频第一区| 国产精品美乳在线观看| 欧美激情精品久久久| 国产精品久久久久久av福利| 久久躁日日躁aaaaxxxx| 国产精品揄拍500视频| 亚洲欧美中文字幕在线一区| 91久久中文字幕| 国产91色在线免费| 91精品国产乱码久久久久久久久| 中文字幕亚洲综合久久| 欧美性猛交视频| 国产精品高潮呻吟久久av无限| 这里只有精品视频在线| 国产精品欧美亚洲777777| 欧美日韩亚洲高清| 久久综合国产精品台湾中文娱乐网| 亚洲一级免费视频| 51精品国产黑色丝袜高跟鞋| 中文字幕不卡av| 欧美视频一区二区三区…| 亚洲天堂免费观看| 久久久成人av| 国产综合香蕉五月婷在线| 久久视频在线免费观看| 日韩av免费看| 亚洲精品视频久久| 这里只有精品丝袜| 日日摸夜夜添一区| 久久亚洲春色中文字幕| 日韩av不卡在线| 亚洲色图18p| 国产精品福利片| 欧美性高潮在线| 日韩av片免费在线观看| 欧美色道久久88综合亚洲精品| 欧美成人午夜免费视在线看片| 欧美大胆a视频| 欧美激情亚洲视频| 国产精品 欧美在线| 色综合伊人色综合网站| 日韩欧美有码在线| 色综合五月天导航| 国产成人欧美在线观看| 日韩欧美精品在线观看| 亚洲高清不卡av| 国产精品美女在线观看| 1769国产精品| 日韩在线视频一区| 777国产偷窥盗摄精品视频| 日av在线播放中文不卡| 欧美一级视频免费在线观看| 91av视频在线免费观看| 亚洲国产成人爱av在线播放| 精品人伦一区二区三区蜜桃网站| 伊人久久久久久久久久| 日韩精品福利在线| 国产精品欧美一区二区| 亚洲图片欧洲图片av| 裸体女人亚洲精品一区| 欧美视频二区36p| 高清欧美电影在线| 日韩精品视频在线播放| 久久精品国产2020观看福利| 91久久国产婷婷一区二区| 91九色精品视频| 中文字幕精品网| 亚洲精品电影久久久| 国产视频精品久久久| 国产精欧美一区二区三区| 国产精品精品一区二区三区午夜版| 亚洲一级片在线看| 在线精品高清中文字幕| 秋霞成人午夜鲁丝一区二区三区| 欧美自拍大量在线观看| 91在线视频精品| 成人黄色中文字幕| 国产一区二区在线免费视频| 自拍视频国产精品| 日本aⅴ大伊香蕉精品视频| 欧美成人剧情片在线观看| 日韩欧美第一页| 久久琪琪电影院| 成人性生交大片免费看小说| 久久亚洲精品一区| 亚洲综合精品伊人久久| 国产精品欧美日韩一区二区| 欧美视频在线观看免费网址| 97超级碰碰碰久久久| 自拍亚洲一区欧美另类| 中文字幕免费精品一区| 久久精品99国产精品酒店日本| 中文字幕视频在线免费欧美日韩综合在线看| 91免费电影网站| 欧美中文在线观看国产| 亚洲视频在线免费看| 激情成人中文字幕| 国产精品色婷婷视频| 国产一区二区欧美日韩| 亚洲国产精品视频在线观看| 成人信息集中地欧美| 国产精自产拍久久久久久| 日韩亚洲综合在线| 日本免费久久高清视频| 欧美久久精品一级黑人c片| 亚洲aa中文字幕| 日韩精品在线观| 91精品国产一区| 精品福利在线视频| 综合国产在线观看| 国产乱肥老妇国产一区二| 亚洲va久久久噜噜噜久久天堂| 亚洲人成网站色ww在线| 成人做爰www免费看视频网站| 热99精品里视频精品| 热99在线视频| 国模精品视频一区二区三区| 亚洲精品久久视频| 成人黄色片网站| 午夜免费日韩视频| 成人一区二区电影| 98精品在线视频| 亚洲一区二区三区成人在线视频精品| 黄色一区二区三区| 国产精品成人一区二区三区吃奶| 欧美精品久久久久| 91精品国产高清久久久久久91|