Swift3.0 语法概述 (初级篇)

前言

准备打算用一个月时间学习Swift,包括语法跟实战,顺便写写博客记录学习里程,方便日后重拾。

目录

  • Playgrounds
  • 表达式,变量 & 常量
  • 自增 自减
  • 类型转换
  • 字符串(Strings)的使用
  • 元组(Tuples)

Playgrounds

  • 新建Playgrounds
    包括命名存放位置等等····
    用Playgrounds的好处是不用运行可以知道结果,所以用来学习语法再好不过了。


    Swift3.0 语法概述 (初级篇)_第1张图片
    Paste_Image.png
  • Playgrounds概述
Swift3.0 语法概述 (初级篇)_第2张图片
Paste_Image.png
  1. 代码编写区
  2. 编写代码结果的显示
  3. Playgrounds默认是自动执行,这意味着写完代码下一刻就能看到输出结果了。按住不放,就可以看到两个选项,1.自动执行 2.手动执行
  4. 显示的是playground的状态,只要不停的输入代码,就好会菊花器不舍昼夜的转,表示正在执行···
  5. 略(这个自己点的看看就知道是干什么的了)

表达式,变量 & 常量

  • 代码注释
    单行注释
    // 这是单行注释
    多行注释
/* 这是注释
     依然是注释
     还TM是注释 ... */```
* 控制台打印结果
` print("Hello , Swift Apprentice reader!") `

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1292402-b096cf530b36a0d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
* 算术运算
这里要注意的是书写格式,要么操作符(+ - * /)两边都不要空格,要么都加空格。

2+6 // OK
2 + 6 // OK
2 +6 // ERROR
2+ 6 // ERROR```

  • 数学函数
    Swift中已经包含大部分数学函数,下面看看怎么用吧~
sin(45 * Double.pi / 180)
// 0.7071067811865475
cos(135 * Double.pi / 180)
// -0.7071067811865475
 sqrt(2.0)
// 1.414213562373095
max(5, 10)
// 10
min(-5, -10)
// -10
 max(sqrt(2.0), Double.pi / 2)
// 1.570796326794897
  • 常量 & 变量
    常量
 let number: Int = 10
number = 20             //error 值不可变

变量

var variableNumber: Int = 42
variableNumber = 0                   //OK
variableNumber = 1_000_000   //OK
Swift3.0 语法概述 (初级篇)_第3张图片
Paste_Image.png
  • 常量 & 变量命名
    继承OC语言风格使用驼峰命名法,第一个单词首个字母小写后面单词第一个字母大写,命名尽量清晰明了。
    例如:
let personAge: Int = 10
let numberOfPeople: Int = 10

自增 自减

var counter: Int = 0
counter += 1     //等于 counter = counter + 1
// counter = 1    
counter -= 1      //等于 counter = counter - 1
// counter = 0     //

有一点需要注意的是现在swift中不支持 ++ 和 -- 了,使用了++或者--就会出现编译错误❌

Swift3.0 语法概述 (初级篇)_第4张图片
Paste_Image.png

同样的,对应乘除也是适用的

var counter: Int = 10
counter *= 3  // same as counter = counter * 3
// counter = 30
counter /= 2  // same as counter = counter / 2
// counter = 15

类型转换

  • 赋值运算两边类型转换
var integer: Int = 100
var decimal: Double = 12.5
integer = decimal```
如果想把Double型变量赋值给Int型,就会出现`
  Cannot assign value of type 'Double' to type 'Int'`错误,我们潜意识中认为不会出错,但是swift是强类型语言,所以必须相同的类型才能赋值。
像这样:

var integer: Int = 100
var decimal: Double = 12.5
integer = Int(decimal) // integer = 12

* 操作符与混合类型

let hourlyRate: Double = 19.5
let hoursWorked: Int = 10
let totalCost: Double = hourlyRate * hoursWorked // error
let totalCost: Double = hourlyRate * Double(hoursWorked) //OK

上述代码会出现`Binary operator '*' cannot be applied to operands of type 'Double' and
'Int'`错误,其他数学运算对于不同的类型也会出现类似错误。在swift中,必须明确类型,因为结果只有一个类型。
* 类型推断
顾名思义就是声明的变量或常量根据赋值右值类型判断自己的类型。
例如:

let wantAInt = 3 // wantADouble is Int
let wantADouble = 3.0 // wantADouble is Double

按住option鼠标点击变量或常量名就可以看到类型了

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1292402-baa9497845a7da5f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 字符串(Strings)的使用
字符串其实就是字符(characters)的集合,swift可以直接操作字符串(strings)和字符(characters)

let characterA: Character = "a"
let characterDog: Character = ""
let stringDogA: String = "Dog"
let stringDogB = "Dog" // stringDogB is String
let stringDogC: String = "a" // stringDogC is String```
这里需要注意的是,无论赋值字符串或者字符给变量(常量),都会被推断为String,如果要声明为字符类型一定要明确。像这样 :let characterA: Character = "a"

  • 操作字符串
    无论是字符串的拼接还是插入数字都非常方便
//拼接
var message = "Hello" + " my name is "  //message = "Hello my name is"
let name = "Matt"
message += name // message "Hello my name is Matt"
//插入数字
messageAge = ""
let age = 10
messageAge += " My age is" + String(age)" //My age is 10
//插入字符串
message = "This is string "
let exclamationMark: Character = "a"
message += String(exclamationMa) //This is string a

拼接或插入之前都要转换为String类型,其实还有一种更逆天的方法,使用 \(),不但逆天,而且通俗易懂

var message = ""
let age = 10
let rate = 2
let character: Character = "a"
message = "Hello, my age is \(age)"//"Hello, my age is 10"
message = "10 years later,my age is \(age * rate)" //10 years later,my age is 20
message = "I like \(character)" //"I like a"

元组(Tuples)

swift中使用tuple来表示简单的有关联的数据,比如说一对二维坐标(x ,y)

let coordinates: (Int, Int) = (2, 3)
// 也可以使用类型推断
let coordinates = (2.1, 3.2) // coordinates被推断的类型为: (Double, Double)
// 分别打印坐标的值,访问元组第一个成员 元组名.0,第二个第三个以此类推···
print("x坐标为\(coordinates.0)") //x坐标为2.1
print("y坐标为\(coordinates.1)") //y坐标为3.2

其实swift中支持为元组成员命名

let coordinatesNamed = (x: 2, y: 3) // 这时被推断类型为: (x: Int, y: Int)
// 访问
print("x坐标为\(coordinates.x)") //x坐标为2
print("y坐标为\(coordinates.y)") //y坐标为3

总结

初级篇就先写这么多了,后面会陆续写更复杂一点的语法内容。当然,除了语法外还有实战篇。

你可能感兴趣的:(Swift3.0 语法概述 (初级篇))