为什么在每次调用时,totalmiles不会被置为0呢?

来源:8-4 Swift-值类型和引用类型

风清丶扬

2015-02-17 17:25

为什么在每次调用时,totalmiles不会被置为0呢?我也有同样的问题

写回答 关注

1回答

  • qizt
    2015-06-13 23:39:50

    注意,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.

    点击获取奖励

    可能是沿袭了太多编程OC遗留下来的思想和习惯 .. 对于 'totalMiles在之后的几次调用中 , 值都能保存下来' 这个问题还是比较费解 . 能否将其看作是一个 静态变量 ? 或者是一个指针? 还是说应该换一种思想去看待这一问题呢?

    2015-06-18 09:44:15

    共 1 条回复 >

玩儿转Swift

这套教程比任何的Swift中文教程深入,并且演示示例更丰富

57181 学习 · 511 问题

查看课程

相似问题