Optional Values可選值簡述

2021-07-24 23:13:22 字數 832 閱讀 2097

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排程下去執行另外一段 而返回控制時不會出現什麼錯誤 而不可重入的函式由於使用了一些系統資源,比如全域性變數區,中斷向量表等,所以它如果被中斷的話,可能會出現問...