亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

5-5 閉包和函數是引用類型

既然 planA = runningMetersWithMetersPerDay, 那為什么調用planA和調用runningMetersWithMetersPerDay時產生的計算結果完全不一樣?為什么只有前者會把totalMeters清零,后者不會?

正在回答

2 回答

其實planA就是()->Int嘛 ,他調用的就是函數里面的閉包 并沒有調用函數runningMetersWithMetersPerDay

而閉包引用了函數里面的totalmeter , totalmeter只有一個地址 , 所以會隨著其+=不斷改變

0 回復 有任何疑惑可以回復我~

前者不會把planA中的totalMeters清零,因為閉包獲取的是該對象的引用,下次再次調用planA的時候,相當于你是根據地址去獲取totalMeters的值,metersDay是上個函數帶過來的,所以會不斷的增加2000,然后把結果更新totalMeters的引用。 如果重新調用runningMetersWithMetersPerDay相當于重新開辟一份內存,此時的totalMeters對應的內容地址中保存的是0 。說的有點啰嗦,使用指針的理念講的,不知道有沒有表達清楚

0 回復 有任何疑惑可以回復我~
#1

慕田峪5265974 提問者

因為我沒有編程基礎,所以你的這段解釋還是比較難以理解。所以"var planA = runningMetersWithMetersPerDay" 這行代碼的真正含義是什么呢?過去我一直以為只是runningMetersWithMetersPerDay太長了所以用個比較簡單的planA來替代,按照這個例子來看他倆是完全不一樣的東西嗎?感謝回答。
2017-02-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

5-5 閉包和函數是引用類型

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號