var
str :
string
?乙個基礎型別在沒有初始值的時候是不能使用的,而optional value在未經初始化的時候值為nil,nil代表值缺失。
varstr :
string
? ="hello"
vars :
string
=str
//錯誤,不能將可選量
str直接賦值給
svar
s :string
=str!//
正確,在
str後面新增
!來顯示拆包才能賦值給
string
型別的s
變數var
n1 :
int? =
20var
n2 :
int? =
15let
sum =n1+
n2//
錯誤,程式不能直接把
int?
型別的變數或常量當成
int類直接使用
letsum =
n1!+n2!
//正確,程式要先把
n1,n2
顯式拆包時候才能執行運算
隱式拆包
隱式拆包就是通過在宣告時的資料型別後面加乙個感嘆號(!)來實現:
varstr:
string
! ="hello world!」
str//執行結果:hello world!
這個語法相當於告訴編譯器:在我們使用optional值前,這個optional值就會被初始化,並且總是會有值,所以當我們使用時,編譯器就幫我做了一次拆包。
可移動構造 可複製構造 可移動賦值 可複製賦值
記錄一下這幾個容易混淆的概念。可移動構造 moveconstructible 指定該型別的例項可以從乙個右值實參構造 定義 給定 下列表示式必須合法且擁有指定的效果 t u rv u 的值等於 rv 在初始化前的值。rv 的新值未指明。t rv t rv 的值等於 rv 在初始化前的值。rv 的新值...
可重入函式 可重入核心
可重入函式這一概念早有接觸,但一直未有系統的理解,最近閱讀 apue 訊號一章時,其中講解很到位,故總結如下。訊號作為一種軟中斷,能夠被程序給捕獲,因而也就中斷程序的正常執行,轉而去執行訊號處理程式,最後再返回到原程序繼續正常執行。然而,當程序正在執行 malloc 動態記憶體分配時,訊號產生從而轉...
函式可重入和可過載
可重入函式 可重入函式主要用於多工環境中,乙個可重入的函式簡單來說就是可以被中斷的函式,也就是說,可以在這個函式執行的任何時刻中斷它,轉入os排程下去執行另外一段 而返回控制時不會出現什麼錯誤 而不可重入的函式由於使用了一些系統資源,比如全域性變數區,中斷向量表等,所以它如果被中斷的話,可能會出現問...