美文网首页程序员
Swift - 变量、常量、可选项、字面量

Swift - 变量、常量、可选项、字面量

作者: Albert_Li99 | 来源:发表于2017-11-15 17:01 被阅读229次

Swift变量

变量是一种使用方便的占位符,用于引用计算机内存地址。
Swift每个变量都指定了特定的类型,该类型决定了变量占用内存的大小,不同的数据类型也可以决定可以存储值的范围。
上一篇文章:“Swift 基本语法和数据类型”已经为大家介绍了基本的数据类型,包括:整形Int、浮点数Double和Float、布尔类型Bool以及字符串类型String等。此外Swift还提供了其他更强大数据类型,Optional、Array、Dictionary、Struct和Class等。

声明变量

声明变量意思是告诉编译器在内存中的那个位置上为变量创建多大的存储空间。在使用变量前,你需要使用var关键字声明。

var name = <initial value>

以下是一个Swift程序中变量声明的简单实例

var varA = 42
print(varA)

var varB : Float
varB = 3.14
print(varB)

以上程序的执行结果为: 42,3.14

变量命名

变量名可以由字母、数字和下划线组成。
变量名需要字母或下划线开始。Swift是一个区分大小写的语言,所以字母的大写与小写是不一样的。变量名也可以使用简单的Unicode字符,如下所示:

var name = "Hello Swift!"
print(name)
var 你好 = “你好啊”
print(你好)

以上程序的执行结果为:Hello Swift,你好啊

变量输出

变量和常量可以使用print函数来输出。在字符串可以使用括号与反斜线来插入变量,如下实例:

var name = "Apple"
var site = "http://www.apple.com"
print("\(name)的官网网址为:\(site)")
//以上程序的执行结果为:Apple的官网网址为:http://www.apple.com

Swift常量

常量一旦设定,在程序运行时就无法改变其值。常量可以是任何的数据类型如:整形常量,浮点型常量,字符量或字符串常量。同样也有枚举类型的常量。常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量的值可以随意更改。

常量的声明

常量使用关键字let类声明,语法如下:

let constValue = <initial value>

以下是一个简单的Swift程序中使用的常量的实例:

let constA = 42
print(constA)

以上程序的执行结果:42

类型标注

当你声明常量或者变量的时候可以加上类型标注,说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。

var constA : <data type> = <optional intial value>

以下是一个简答的实力演示Swift中常量使用类型标注,主要注意的是常量定义时必须初始值。

let constA = 42
print(constA)

let constB : Float = 3.14
print(constB)

以上程序的执行结果为:42, 3.14

常量命名

常量的命名可以由字母,数字和下划线组成。常量需要以字母或下划线开始。Swift是一个区分大小写的语言,所以字母大写与小写是不一样的。常量名可以使用简单的Unicode字符,如下实例:

let constA = "Hello World"
print(constA)
let 你好 = “你好啊”
print(你好)

以上程序的执行结果为:Hello World,你好啊

常量输出

变量和常量可以使用print函数类输出。在字符串可以使用括号与反斜线来插入常量,如下实例:

let name = "Apple"
let site = "http://www.apple.com"
print("(name)的官网网址为:(site)")

以上程序的执行结果为:“Apple的官方网址为:http://www.apple.com

Swift可选(Optional)类型

Swift的可选(Optional)类型,用于处理值缺失的情况。可选表示“有一个值”或者“没有值”。作为命名类型Optional的简写,换而言之,一下两种声明是相等的。

var optionalInteger : Int?
var optionalInteger: Optional<Int>

在这两种情况下,变量optionalInteger都是可选整数类型。注意:在类型和?之间没有空格。

Optional是一个含有两种情况的枚举,None和Some(T),用来表示可能有或者没有值。任何类型都可以明确声明为(或者隐式转换)可选类型。当声明一个可选类型的时候,要确保用括号给 ? 操作符一个合适的范围。例如,声明可选整数数组,应该写成 (Int[])? 写成 Int[]? 会报错。
当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil。
可选项遵照 LogicValue 协议,因此可以出现在布尔环境中。在这种情况下,如果可选类型T?包含类型为T的任何值(也就是说它的值是 Optional.Some(T) ),这个可选类型等于 true,反之为 false。
如果一个可选类型的实例包含一个值,你可以用后缀操作符 !来访问这个值,如下所示:

optionalInteger = 42
optionalInteger! //42

使用操作符!去获取值为nil的可选变量会有运行时错误。
你可以用可选链接和可选绑定选择性执行可选表达式上的操作。如果值为nil,任何操作都不会执行,也不会有运行报错。
让我们来详细看下以下实例来了解 Swift 中可选类型的应用:

var myString : String? = nil
if myString != nil {
    print(myString)
}  else {
    print("字符串为nil")
}

以上程序的执行结果为:字符串为nil。

可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,而可选类型对所有的类型都可用,并且更安全。

强制解析

当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个感叹号表示“我知道这个歌可选有值,请使用它。”这个就是可选值的强制解析

var myString : String?
myString = "Hello Swift!"
if myString != nil 
{
    print(myString)
} else {
    print("myString 值为 nil")
}

以上程序的执行结果为:Optional("Hello Swift!")
强制解析可选值,使用感叹号(!)

 var myString:String?
 myString = "Hello, Swift!"
 if myString != nil {
   // 强制解析
   print( myString! )
 } else {
   print("myString 值为 nil")
 }
以上程序的执行结果为:"Hello Swift!"

注意:
使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。

自动解析

你可以在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。
实例如下:

var myString:String!
myString = "Hello, Swift!"
if myString != nil  {
   print(myString)
} else {
   print("myString 值为 nil")
}

以上程序执行结果为:Hello, Swift!

可选绑定

使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
像下面这样在if语句中写一个可选绑定:

if let constantName = someOptional {
    statements
}

可选项绑定的实例:

var myString:String?
myString = "Hello, Swift!"
if let yourString = myString {
   print("你的字符串值为 - \(yourString)")
} else {
   print("你的字符串没有值")
}

以上程序执行结果为:你的字符串值为 - Hello, Swift!

字面量

所谓的字面量,其实就是像特定的数字,字符串或者是布尔值这样,能够直接了当地的指出自己的类型并为变量进行赋值的值。比如下面示例:

//整型字面量
let aNum = 3
//字符串字面量
let aString = “Hello”
//布尔值字面量
let aBool = true
整形字面量

整型字面量可以使一个二进制、八进制、十进制、十六进制的常量。二进制前缀为0b,八进制前缀为0o,十六进制前缀为0x,十进制没有前缀:
以下为一些整型字面量的实例:

//17 - 十进制表示
let decimalInteger = 17
//17 - 二进制表示
let binaryInteger = 0b10001
//17 - 八进制表示
let octalInteger = 0o21
//17 - 十六进制表示
let hexadecimalInteger = 0x11
浮点型字面量

浮点型字面量有整数部分,小数点,小数部分及指数部分。
除非特别指定,浮点型字面量的默认推倒类型为Swift标准库类型中的Double,表示64位浮点数。
浮点型字面量默认用十进制表示(无前缀),也可以用十六进制表示(加前缀0x)。

十进制浮点型字面量由十进制数字串后跟小数部分或指数部分(或两者皆有)组成。十进制小数部分由小数点 . 后跟十进制数字串组成。指数部分由大写或小写字母 e 为前缀后跟十进制数字串组成,这串数字表示 e 之前的数量乘以 10 的几次方。例如:1.25e2 表示 1.25 ⨉ 10^2,也就是 125.0;同样,1.25e-2 表示 1.25 ⨉ 10^-2,也就是 0.0125。

十六进制浮点型字面量由前缀 0x 后跟可选的十六进制小数部分以及十六进制指数部分组成。十六进制小数部分由小数点后跟十六进制数字串组成。指数部分由大写或小写字母 p 为前缀后跟十进制数字串组成,这串数字表示 p 之前的数量乘以 2 的几次方。例如:0xFp2 表示 15 ⨉ 2^2,也就是 60;同样,0xFp-2 表示 15 ⨉ 2^-2,也就是 3.75。

负的浮点型字面量由一元运算符减号 - 和浮点型字面量组成,例如 -42.5。

浮点型字面量允许使用下划线" _" 来增强数字的可读性,下划线会被系统忽略,因此不会影响字面量的值。同样地,也可以在数字前加 0,并不会影响字面量的值。
以下为一些浮点型字面量的实例:

//十进制浮点型字面量
let decimalDouble = 12.1875    
//十进制浮点型字面量   
let exponentDouble = 1.21875e1    
//十六进制浮点型字面量
let hexadecimalDouble = 0xC.3p0   
字符串字面量

字符串型字面量由被包在双引号只能怪的一串字符串组成,形式如下:
“hello”
字符串型字面量中不能包含未转义的双引号:“”、为转义的:""、回车符或换行符。

以下为字符串字面量的简单实例:

let stringL = "Hello\Apple\n\n苹果官网:\'http://www.apple.com\'"
print(stringL)  

以上程序执行结果为:
Hello Apple
苹果官网:‘http://www.apple.com

布尔型字面量

布尔型字面量的默认类型是Bool。布尔值字面量有三个值,它们是Swift的保留关键字:
1.true表示真
2.false表示假
3.nil表示没有值

下一篇:“Swift运算符” http://www.jianshu.com/p/6d7e6b88034d

相关文章

  • Swift - 变量、常量、可选项、字面量

    Swift变量 变量是一种使用方便的占位符,用于引用计算机内存地址。Swift每个变量都指定了特定的类型,该类型决...

  • Swift 常量、变量、字面量

    类型标注 如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。 以下常量同理 变量命...

  • 0. 详解python中格式化3种方法f/format/%

    一、字面量含义 1、字面量:以变量或常量给出的原始数据,在程序中可直接使用字面量2、字面量的差值:变量与常量以及表...

  • 08-JavaScript语法篇1

    一、字面量、变量、常量 字面量:字面量就是一个值,比如变量的值或者常量的值 变 量:定义完成后,可以修改的数...

  • Swift3自学01

    终于开始学Swift3了 要坚持下去!!! 变量与常量let 常量var 变量optional 可选项 不同类型之...

  • java基础知识整理【2】

    常量和变量 常量:是一个不可改变的量,字面常量(通过当前字面就知道值并且不能更改) 例如:整数常量1 变量...

  • Swift 5.1 - 基础(1)

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「常量变量」「元组」「可选项」「可选绑定」作者: 沐灵洛审...

  • Java入门初学第一课

    变量 1.变量就是可变的量2.常量就是不可变的量3.字面量:Java的变量和常量中存放的具体的数据称为字面量计算机...

  • Swift-字符串和字符(一)

    字符串字面量 字符串字面量可以用于为常量和变量提供初始值: 注意someString常量通过字符串字面量进行初始化...

  • Java-day3

    常量 : 1、字面量常量:比如: 1,2,3,3.14,false,true等 变量: 分类:成员变量(f...

网友评论

    本文标题:Swift - 变量、常量、可选项、字面量

    本文链接:https://www.haomeiwen.com/subject/lgfhvxtx.html