第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ruby block問題

ruby block問題

德瑪西亞99 2019-04-14 11:21:18
做七周七語言ruby第二天習(xí)題的時候要實現(xiàn)一個簡單的Tree類,以下代碼可以運行,但是把children.each{|c|c.visit_all(n+1){|node|puts"-#{node.node_name}"}}這行的{|node|puts"-#{node.node_name}"}改成&block就跑不起來,請問是為什么?#!/usr/bin/rubyclassTreeattr_accessor:children,:node_namedefinitialize(tree)tree.eachdo|key,value|@node_name=key@children=value.map{|(key,value)|Tree.new(key=>value)}endenddefvisit_all(n,&block)visit&blockprint''*nchildren.each{|c|c.visit_all(n+1){|node|puts"-#{node.node_name}"}}enddefvisit(&block)block.callselfendendruby_tree=Tree.new({'grandpa'=>{'day'=>{'child1'=>{},'child2'=>{}},'uncle'=>{'child3'=>{},'child4'=>{}}}})ruby_tree.visit_all(1){|node|puts"-#{node.node_name}"}ps:ruby環(huán)境是2.1.3
查看完整描述

2 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊

每行代碼執(zhí)行的時候都有一個上下文,在上下文中存儲著這行代碼可以訪問的一些變量。塊可以訪問定義時的上下文,在你的例子中這個塊定義在全局,所以可以訪問到全局變量,不過這里的全局變量只有ruby_tree(也有一些語言內(nèi)置的就不說了)。但是沒有block這個變量,所以在塊內(nèi)是不能訪問的,會報類似不變量或方法存在的錯誤。
換一個解譯,如果用遠(yuǎn)古的C語言類似的例子說的話,就是block這個變量是個實參,而你在塊中要使用與其對待的形參node這個變量。
                            
查看完整回答
反對 回復(fù) 2019-04-14
  • 2 回答
  • 0 關(guān)注
  • 368 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號