課程
/移動開發
/iOS
/玩兒轉Swift
為什么在每次調用時,totalmiles不會被置為0呢?我也有同樣的問題
2015-02-17
源自:玩兒轉Swift 8-4
正在回答
注意,var totalMiles = 0 這句是處在 calcTotalMiles 函數中。
而你說的每次調用,調用的并不是 calcTotalMiles 這個函數,而是?calcTotalMiles 這個函數的返回值,也就是另一個函數。返回的函數被命名為?dailyTwoMiles 或者?dailyThreeMiles,返回函數的內容是閉包內容:{totalMiles += todayMiles; return totalMiles; },其中并沒有對 totalMiles 重置的語句,所以totalMiles不會被重置。
那么問題來了,totalMiles 什么時候被重置。很簡單,var totalMiles = 0 處在?calcTotalMiles 函數中,當然是 calcTotalMiles 被調用時會被重置,也就是?var dailyTwoMiles = calcTotalMiles(2) 和?var dailyThreeMiles = calcTotalMiles(3) 這兩句在運行時會重置 titalMiles.
點擊獲取獎勵
舉報
這套教程比任何的Swift中文教程深入,并且演示示例更豐富
1 回答為什么在每次調用時,totalmiles不會被置為0呢?
2 回答totalMiles在閉包中被解析為靜態變量么還是全局變量,為什么每次調用func都會自動添加
3 回答每次編輯時候都會彈這個
4 回答為什么我使用的toInt方法會給提示出錯
1 回答接受返回值那里為什么用let 不用var?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-06-13
注意,var totalMiles = 0 這句是處在 calcTotalMiles 函數中。
而你說的每次調用,調用的并不是 calcTotalMiles 這個函數,而是?calcTotalMiles 這個函數的返回值,也就是另一個函數。返回的函數被命名為?dailyTwoMiles 或者?dailyThreeMiles,返回函數的內容是閉包內容:{totalMiles += todayMiles; return totalMiles; },其中并沒有對 totalMiles 重置的語句,所以totalMiles不會被重置。
那么問題來了,totalMiles 什么時候被重置。很簡單,var totalMiles = 0 處在?calcTotalMiles 函數中,當然是 calcTotalMiles 被調用時會被重置,也就是?var dailyTwoMiles = calcTotalMiles(2) 和?var dailyThreeMiles = calcTotalMiles(3) 這兩句在運行時會重置 titalMiles.