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編程

相關文章
相關標籤/搜索