美文网首页iOS DeveloperiOS开发程序员
Swift3.0 语法概述 (初级篇)

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

作者: 绍清_shao | 来源:发表于2017-03-13 17:41 被阅读127次

前言

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

目录

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

Playgrounds

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


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

表达式,变量 & 常量

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

![Paste_Image.png](https://img.haomeiwen.com/i1292402/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
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中不支持 ++ 和 -- 了,使用了++或者--就会出现编译错误❌

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](https://img.haomeiwen.com/i1292402/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 语法概述 (初级篇)

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

  • Swift3.0语法变化

    Swift3.0语法变化

  • index.html

    学习英语的网站 谢孟媛英语 分为 发音篇(10篇) 初级语法 中级语法 每篇都是以视频教授

  • Swift 语法速查手册

    Swift3.0语法速查手册Using Swift with Cocoa and Objective-CApple...

  • Markdown 基础

    掌握 Markdown 语法的要旨 这篇文章对 Markdown 进行了简单的概述。语法篇 对 Markdown ...

  • Markdown 语法简介

    Markdown语法-初级篇 标签:Markdown 1. 斜体和粗体 使用 * 和 ** 表示斜体和粗体。 示例...

  • 二、详解Alamofire(4.0.0)

    Alamofire(4.0.0是基于Swift3.0语法)是Swift中最常用的网络框架。 1. AFError ...

  • Swift3.0:KVO和Notification

    (基于Swift3.0语法)都是挺简单的直接对比吧 1、KVO(键值观察) 2、NSNotification(通知...

  • Markdown 简易入门教程

    目录 概述简介官方文档Markdown编辑器 初级语法标题粗体和斜体段落和换行分隔线引言列表无序列表有序列表代码行...

  • iOS 属性修饰词和权限控制词

    Swift 权限控制词 概述 swift3.0中,新增了fileprivate和open权限。swift4.0中,...

网友评论

    本文标题:Swift3.0 语法概述 (初级篇)

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