Swift 中的变量、常量、类型

a good building needs a good foundation

变量、常量、类型

变量是存储特定类型值的临时容器:

var count: Int
var shouldRemind: Bool
var text: String
var list: [ChecklistItem]
  • Double,与 Float 相似,但精度更高。比如可以使用 Doubles 来存储经纬度。

  • Character,字符。String 就是字符的集合。

  • UInt,Int 变体。U 代表无符号,表示数据类型只能包含正值。之所以称为无符号,是因为数字前面不能带有负号(-)。 UInt 可以存储 0 到 18 位数之间的数字,但不能存储负数。

  • Int8,UInt8,Int16,UInt16,Int32,UInt32,Int64,UInt64。这些都是 Int 的变体。区别在于它们用于存储的字节数。字节越多,它们可以存储的值越大。实际上,我们经常使用 Int,在 64 位平台上它使用 8 个字节存储数据,并且最多可以容纳大约 19 位数字的正数和负数。

  • CGFloat,它实际上不是 Swift 类型,而是 iOS SDK 定义的类型。这是一个小数点数字,例如 Float 和 Double。由于历史原因,在整个 UIKit 中都将其用于浮点值。 (“ CG”前缀代表Core Graphics框架)

Swift 对类型校验非常严格,比其它许多语言都严格。如果变量的类型为 Int,则不能赋值给它 Float 类型。

即使两种类型都代表某种类型的数字,Swift 都不会自动在不同的数字类型之间进行转换。

eg.

var i = 10
var f: Float
f = i         // error
f = Float(i)  // OK

创建新变量时,我们不必总是指定类型。如果给变量一个初始值,Swift 将使用类型(type inference)推断来自动确定该变量的类型:

var i = 10              // Int
var d = 3.14            // Double
var b = true            // Bool
var s = "Hello, world"  // String

如果使用具有与实例变量同名的局部变量,则可能引起混淆。当你调用那个变量时,你得到的可能并不是你想要的那个值,代码一多,你自己可能都分不清哪个是哪个了:

class MyObject {
  var count = 7      // an instance variable

  func myMethod() {
    var count = 42   // local variable “hides” instance variable
    print(count)     // prints 42
  }
}

一些开发者喜欢在实例变量名称的前面加下划线(_),以避免出现此问题:比如实例变量写成_count 而不是 count。还有一种方法是,当访问实例变量时使用关键字 self:

  func myMethod() {
    var count = 42
    print(self.count)   // prints 7
  }
常量 Constants

有时,我们将计算或方法调用的结果存储到临时容器中,此后该值将永远不会更改,在这种情况下,我们最好使用常量而不是变量:

let pi = 3.141592
let difference = abs(targetValue - currentValue)
let message = "You scored \(points) points"
let image = UIImage(named: "SayCheese")

提示:一个大牛的建议是,90%的情况下使用 let 都是正确的解决方案。如果使用 let 发现错误,Swift 编译器会警告我们正在尝试更改常量。这种情况下,我们再将 let 更改为 var。

值类型(Value types) vs 引用类型(reference types)

当使用基本类型(例如整数和字符串)时,使用 let 创建的常量一旦被赋予值就无法更改:

let pi = 3.141592
pi = 3                // not
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值