Swift之基本运算、数据类型、元组


layout: post title: Swift之基本运算、数据类型、元组 date: 2019-06-18 15:32:24.000000000 +09:00 categories:git

  • Swift

本文首发于个人我的博客github

引言

Swift编程语言,支持多编程范式和编译式,用来撰写基于macOS/OS X、iOS、watchOS和tvOS的软件。 苹果公司于2014年在苹果开发者年会(WWDC)发布了Swift编程语言。从设计上苹果公司让Swift与Objective-C共存在苹果公司的操做系统上编程

苹果宣称Swift的特色是:快速、现代、安全、互动,并且明显优于Objective-C语言。Swift以LLVM编译,能够使用现有的Cocoa和Cocoa Touch框架。Xcode Playgrounds功能是Swift为苹果开发工具带来的最大创新,该功能提供强大的互动效果,能让Swift源代码在撰写过程当中能即时显示出其运行结果安全

2015年6月8日,苹果于WWDC2015上宣布,Swift将开放源代码,包括编译器和标准库 2015年12月3日,苹果宣布开源Swift,并支持Linux,苹果在新网站Swift.org和托管网站Github上开源了Swift,但苹果的app store并不支持开源的Swift,只支持苹果官方的Swift版本,官方版本会在新网站Swift.org上按期与开源版本同步bash

以前因为每一个版本都不兼容,因此对开发者不友好,每次新版本,就像学了一门新的语言。可是从Swift5开始,API终于稳定下来了。能够来总结,学习一下Swift了。app

一些基本操做

  • 生成语法树: Swiftc -dump-ast main.Swift
  • 生成最简洁的SIL代码:Swiftc -emit-sil main.Swift
  • 生成LLVM IR代码: Swiftc -emit-ir main.Swift -o main.ll
  • 生成汇编代码: Swiftc -emit-assembly main.Swift -o main.s

基础语法

  • 不用编写main函数,Swift将全局范围内的首句可执行代码做为程序入口
  • 一句代码尾部能够省略分号(;)
  • 多句代码写到同一行时必须用分号(;)隔开
  • 用var定义变量,let定义常量,编译器能自动推断出变量\常量的类型
  • Playground能够快速预览代码效果,是学习语法的好帮手
  • Command + Shift + Enter: 运行整个Playground
  • Shift + Enter:运行截止到某一行代码

例如框架

var a = 10
a = 20
let b = 88
let c = 12 ; let d = 40
print(d)
复制代码

建立对象,例如view视图,控制器等也更简单编程语言

注释

和OC同样,有单行注释,多行注释 例如函数

// 单行注释

/*
 多行注释
 
 */
 
复制代码

可是,Swift中增长了,注释的嵌套,好比这样是能够的工具

/*
 多行注释
 /*
 
 // 单行注释
 
 嵌套多行注释
 */
 
 */
复制代码

Playound的注释是支持markup(相似Markdown)语法的

  • 开启markup:Editor->Show Rendered Markup
  • 只能在Playground中使用

常量

  • 只能赋值1次
  • 常量的值不要求在编译的时候肯定,只要在使用以前赋值一次就能够了 例以下面都是能够的
var num = 10
num += 20
num += 30
let age = num
print(age)

func getAge() -> Int {
    return 10
}
let age2 = getAge()
print(age2)

复制代码

可是下面这种是不能够的,由于在初始化以前,是不能够使用的

let number: Int
print(number)
复制代码

固然了,这种也是不行的

let number
number = 25
复制代码

标识符

好比常量名,变量名,函数名等标识符

  • 标识符不能数字开头,不能包含空白字符,制表符,箭头灯特殊字符。
  • 除此以外,几乎能够使用任何字符。

常见数据类型

  1. 值类型(value type)
    • 枚举(enum): optional
    • 结构体(struct): Float、 Double、Float、Int、Character、String、Array、Dictionary、Set
  2. 引用类型(reference type)
    • 类(class)

类型转换

不一样类型之间的转换,好比

// 整数转换
let a: UInt16 = 2_000
let b: UInt8 = 10
let c = a + UInt16(b)
print(c)


//整数和浮点数转换
let intNumber = 3
let doubleNumber = 0.1415926
let pi = Double(intNumber) + doubleNumber
let intPi = Int(pi)

// 字面量能够直接相加,由于字面量没有明确的类型
let res = 3 + 2.565


复制代码

元组

元祖能够把多个值保存在一块儿

格式: (数值1, 数值2, 数值3)
let numbers = (10, 20, 30)
// 能够经过索引访问
numbers.0
numbers.1
numbers.2
复制代码

元祖中还能够保存不一样的数据类型的值

let person = (name: "lnj", age: 30, score: 100.0)
// 能够经过名称访问
person.name
person.age
person.score
复制代码

咱们甚至能够这样子

// 至关于同时定义了三个变量
let (name, age, score) = ("lnj", 30, 80)
name
age
score

复制代码

参考资料:

Swift官方源码

从入门到精通Swift编程

相关文章
相关标签/搜索