Swift入门(一)——基本语法

最近开始学习swift,把学习的过程和总结整理成一个系列,方便日后回顾总结。

基本语法

基础语法

swift中每一行结束后不需要加分号,多个语句在同一行内需要用分好隔开

//表示注释,或者用/* ……*/

常量

常量是指定义之后无法修改值的量,比如设置一个最大尝试登陆的次数,它的值一旦被确定,就不应该在程序中被修改。swift中的常量用let表示,定义方法如下:

let maxAttemptTime = 3 //正确
maxAttemptTime = 4 //错误,常量一旦定义不可以改变
let maxAttemptTime //错误 

另外要注意的是,常量在定义的时候必须要赋初值,当然也可以不这么做,后面会详细介绍。

变量

和常量类不同的是,变量用var表示,可以随意改变值

var currentAttemptTime = 1 //正确
currentAttemptTime = currentAttemptTime + 1 //正确

打印常量和变量

OC中的NSLog方法依然可用,也可以用swift的println()方法。

NSLog("hello world")
println("hello world")
//以上两句等价,输出结果都是"hello world"

//也可以打印变量或者常量
var name = "kt"
NSLog("name = \(name)")
println("name = \(name)")
//以上两句等价,输出结果都是"name = kt"

swift也支持print方法,与println不同的是,println在结尾会自动加上换行符,这与java的语法是一致的。

类型

类型推导

习惯了oc、c++或者java的程序猿会觉得没有变量的类型很奇怪,其实swift和php与js类似,都是支持类型推导功能的。

所谓的类型推导,就是说swift会根据变量的实际值,自动推导出变量所属的类型。

swift中的基础类型有Int、Double、String、UInt8、Character、Bool等。就不一一解释了。Swift中所有的类型都是首字母大写的。

var name = "kt" //自动推导为String类型
var age = 20 //自动推导为Int类型
var pi = 3.1415926 //自动推导为Double类型

宽类型有限

既然swift支持类型推导,那么π的近似值3.1415926,会被推导为什么类型呢?是Float还是Double? 答案是Double,因为swift具有宽类型优先的特性,也就是为自动推导为取值范围更宽泛的类型。

类型标注

最开始提到必须要给常量或者变量赋初值,如果不想赋初值,或者不习惯自动类型推导,我们还可以显示的给常量或者变量标注类型,这被称为“类型标注”

var name: String //在变量名后加上冒号和类型名来进行类型标注
//经过类型标注后,可以不赋初值

var name: String = "kt" //人为标注为String类型
var age: Int = 20 //人为标注为Int类型

//这种情况下的类型标注有些多此一举

类型安全

swift支持类型推导,这个功能很方便,与此同时,swift也是严谨的,因为它是类型安全的。

所谓的类型安全是指,不支持常量、变量之间的隐式类型类型转换。

var a = 1
var b = 1.5
var c = a + b //报错

也就是说,不同类型的变量(常量)不可以出现在”+、-、*、/等运算符两侧”。

所谓的常量、变量之间,其实是指字面量之间的隐式类型转换是可以的。比如如下代码:

var pi = 3 + 0.1415926 //这个必须可以啊,否则就乱套了。

类型转换

如果我希望把整数型和浮点型变量相加怎么办呢,可以使用强制类型转换,又称显式类型转换。

var a = 1
var b = 1.5
var c = a + b //报错
var c = Double(a) + b //正确,得到值为2.5的Double型变量c
var c = a + Int(b) //也正确,得到值为2的Int型变量c

需要说明三点:

  1. 精度由高向低或者由低向高都可以,不过高精度转向低精度会丢失小数点后的数据。
  2. 上述代码不可以改为“var c = Float(a) + b”,理由是类型安全 + 宽类型优先。
  3. 注意和C语言的语法区别,C语言中的写法为(int)a,swift中的括号应加在变量上。

类型别名

通过typelias关键字可以重新命名类型,类似于C语言中的typedef,不过更简单。

typealias Name = String //现在Name类型和String类型是完全一样的了。
var myName: Name = "kt"

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 10:44:38

Swift入门(一)——基本语法的相关文章

Swift入门教程:基本语法大全

原文:Swift入门教程:基本语法大全       简介:                                                                                                                                                                                  什么是Swift                                  

Swift入门教程:基本语法(三)

打印输出 Swift提供了2个打印输出函数 println :输出内容后会自动换行 print :对比println,少了个自动换行的功能 示例 输出字符串 println("欢迎学习传智播客iOS学院Swift教程") var name = "传智播客iOS学院\n" print(name) 输出其他数据类型 var age = 7 println(age) println("我今年\(age)岁") 元组类型 什么元组类型 元组类型由 N个

Swift入门教程:基本语法(二)

数字格式 数字可以增加额外的格式,使它们更容易阅读 可以增加额外的零 0 let money = 001999           // 1999 let money2 = 001999.000   // 1999.0 可以增加额外的下划线 _ ,以增强可读性 let oneMillion1 = 1_000_000    // 1000000 let oneMillion2 = 100_0000      // 1000000 let overOneMillion = 1_000_000.000

Swift入门教程:基本语法(一)

      简介:                                                                                       什么是Swift Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为"雨燕",右上角的图标就是它的LOGO 跟Objective-C一样,可以用于开发iOS.Mac应用程序 苹果从2010年7月开始设计Swift语言,耗时4年打造 Swift的语法特点

Swift 入门之简单语法(一)

定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 //: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下代码会报错 // x = 30 //: 使用 `: 类型`,仅仅只定义类型,而没有设置数值 let x1: Int //: 常量有一次设置数值的机会,以下代码没有问题,因为 x1 还没有被设置数值 x1 = 30 //: 一旦设置了数值之后,则不能再次修改,以下代码会报错,因为 x1 已经被设置了数

Swift 入门之简单语法(二)

可选项判断 由于可选项的内容可能为 nil,而一旦为 nil 则不允许参与计算 因此使用中,经常需要判断可选项的内容是否为 nil 单个可选项判断 let url = NSURL(string: "http://www.baidu.com") //: 方法1: 强行解包 - 缺陷,如果 url 为空,运行时会崩溃 let request = NSURLRequest(URL: url!) //: 方法2: 首先判断 - 代码中仍然需要使用 `!` 强行解包 if url != nil

swift入门-day01-基本语法

主要内容: 1.常量和变量 2.Optional 3.控制流 4.循环 5.字符串 6.集合 变量和常量 定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 自动推导 Swift能够根据右边的代码,推导出变量的准确类型 通常在开发时,不需要指定变量的类型 如果要指定变量,可以在变量名后使用:,然后跟上变量的类型 没有隐式转换!!! Swift 对数据类型要求异常严格 任何时候,都不会做隐式转换 如果要对不同类型的数据进行计算,必须要显式的转换 let & var

Swift 入门之简单语法(六)

KVC 字典转模型构造函数 /// `重写`构造函数 /// /// - parameter dict: 字典 /// /// - returns: Person 对象 init(dict: [String: AnyObject]) { setValuesForKeysWithDictionary(dict) } 以上代码编译就会报错! 原因: KVC 是 OC 特有的,KVC 本质上是在运行时,动态向对象发送 setValue:ForKey: 方法,为对象的属性设置数值 因此,在使用 KVC

Swift 入门之简单语法(三)

集合 数组 数组使用 [] 定义,这一点与 OC 相同 //: [Int] let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 遍历 for num in numbers { print(num) } 通过下标获取指定项内容 let num1 = numbers[0] let num2 = numbers[1] 可变&不可变 let 定义不可变数组 var 定义可变数组 let array = ["zhangsan", "lis

Swift 入门之简单语法(四)

函数 目标 掌握函数的定义 掌握外部参数的用处 掌握无返回类型的三种函数定义方式 代码实现 函数的定义 格式 func 函数名(行参列表) -> 返回值 {代码实现} 调用 let result = 函数名(值1, 参数2: 值2...) func sum(a: Int, b: Int) -> Int { return a + b } let result = sum(10, b: 20) 没有返回值的函数,一共有三种写法 省略 () Void func demo(str: String) -