因为实验室要整活所以特地来学学
Swift菜鸟教程

1.前言

Swift是一种支持多编程范式与编译式的开源编译语言,可以用于开发iOS, OS X, watchOS应用程序

  • Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制

2.基础语法

①注释

注释与C极其相似(几乎完全一致)
单行代码注释
//单行代码注释
多行代码注释

/*
多行注释内容
*/

不过不同的是Swift的多行注释中能嵌套多行注释

/*
/*这是一行嵌套代码*/
*/

②分号

Swift不要求在每行语句后面加上;,但是如果在同一行书写多行代码就必须要加上;

③Swift空格(玄学)

Swift对空格有一定的要求
运算符不能直接跟在变量或者常量的后面
标准写法:
let a = 1 + 2;
let b = 3+4

④输出

Swift使用print函数进行输出
print('outputStr')
与python类似,Swift的print函数默认换行
如果要设置不换行的话,需要设置参数
print("target", terminator: "")

⑤输入

使用函数readLine()进行读取
let theInput = readLine()

⑥引入

使用import语句来引入任何Objective-C框架或者C库
import Cocoa

3.数据类型

① Int

长度与当前平台的原生字长相同

② UInt

提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同

③ Float, Double

Double表示64位浮点数,适合高精度浮点数
Float表示32位浮点数

④ 布尔值 Bool

Swift有两个布尔常量,true和false

⑤ 字符串 String

是字符的序列集合
"Hello"

⑤ 字符 Character

"C"

⑥类型别名

类型别名可以为当前的类型定义另外一个名字,功能和C中的typedef类似
typealias newname = type
比如说新名字Ass定义为Int
typealias Ass = Int

⑦类型安全

Swift是一个类型安全的语言,倘若类型不匹配程序会报错
example:

var varA = 42
varA = "This is hello"

报错如下
error: cannot assign value of type 'String' to type 'Int'

4.变量

变量声明格式
var variableName = <initial value>
可以直接进行变量定义,会自动进行类型推导
var varA = 42

也可以按类型进行定义
var varB:Float

输出变量
Swift的输出变量方式与python不同
在print中使用括号与反斜线进行输出

var test = "测试数据"

print("测试数据: \(test)")

5.可选(Optionals)类型

用于处理值缺失的情况
下列两种声明是相等的

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

当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil

如果可选类型的实例包含一个值,可以用后缀操作符!来访问这个值

optionalInteger = 42
optionalInteger!  //代表数42

然而当可选类型值为nil时,获取可能会有运行的错误

可选类型运用(这一段代码我不是很理解因此就全段copy了,不过应该是赋初值为nil的话对其进行条件判断)

import Cocoa

var myString:String? = nil

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

输出结果为字符串为nil

强制解析

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

当可选类型中确定包含值后,可以在可选的名字后面加上!来获取值,感叹号表示我知道这个可选有值请使用它
实例:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

输出
Optional("Hello, Swift")
但如果将print函数中的myString后面加上感叹号
print(myString!)
则会直接输出
Hello,Swift!

在声明可选变量时将?替换为!就不需要用!来强制解析,会自动进行解析
var myString:String!

6.常量

let关键字
Swift常量使用关键字let来声明
let constName = <initial value>
example:
let constA = 42

同样可以标上类型
let constB:Float = 3.14159

7.字面量

整型,字符串,布尔值,十进制等就不列举了

二进制表示
let binaryInteger = 0b10001
八进制表示
let octalInteger = 0o21
十六进制表示
let hexadecimalInteger = 0x11

字符串型字面量

转义字符含义
\0空字符
\\反斜线\
\b退格,将当前位置移到前一列
\f换页,将当前位置移到下页开头
\n换行符
\r回车符
\t水平制表符
\v垂直制表符
\'单引号
\"双引号
\0001到3位八进制所代表的任意字符
\xhh1到2位十六进制所代表的任意字符

8.运算符

  • Swift3中已经取消了++--
    因此需要进行类似运算可以用
    A += 1
    B -= 1

其他运算符都跟C差不多
example:
输出A与B 与运算的结果
print("A&B 结果为:\(A&B)")

区间运算符
Swift提供了两个区间的运算符

  • 闭区间运算符(a...b),定义一个包含从a到b(包含a和b)所有值的区间
    1...5 表示 1,2,3,4,5
  • 半开区间运算符(a..
    1..<5区间值为1,2,3,4

例子

for index in 1...5{
    print("\(index)")
}

输出内容

1
2
3
4
5

9.条件语句

if-else 语句
语法如下

if boolean_expression {
   /* 如果布尔表达式为真将执行的语句 */
} else {
   /* 如果布尔表达式为假将执行的语句 */
}

例子:

var varA:Int = 100;
if varA < 10 {
  print("varA 小于 20");
} else {
   /* 如果条件为 false 执行以下语句 */
   print("varA 大于 20");
}

if- else if -else 语句
语法如下

if boolean_expression_1 {
   /* 如果 boolean_expression_1 表达式为 true 则执行该语句 */
} else if boolean_expression_2 {
   /* 如果 boolean_expression_2 表达式为 true 则执行该语句 */
} else if boolean_expression_3 {
   /* 如果 boolean_expression_3 表达式为 true 则执行该语句 */
} else {
   /* 如果以上所有条件表达式都不为 true 则执行该语句 */
}

switch语句
实例:

switch index {
   case 100  :
      print( "index 的值为 100")
   case 10,15  :
      print( "index 的值为 10 或 15")
   case 5  :
      print( "index 的值为 5")
   default :
      print( "默认 case")
}

注意这里和C中不同的是,Swift中的switch不会从上一个case分支落入到下一个case中,只要第一个匹配到的case分支完成了他需要执行的语句,就完成了整个sw语句的执行,如果想要落入下一个case,需要加上fallthrough关键字

范例

var index = 10

switch index {
   case 100  :
      print( "index 的值为 100")
      fallthrough
   case 10,15  :
      print( "index 的值为 10 或 15")
      fallthrough
   case 5  :
      print( "index 的值为 5")
   default :
      print( "默认 case")
}

输出如下

index 的值为 10 或 15
index 的值为 5

更多基础请看第二篇学习笔记

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议