Swift學習筆記(五) 學習心得

2021-06-22 18:21:24 字數 2907 閱讀 8708

1、 初始化方法中引數會自動帶入外部名、不用寫在引數名稱前新增#

2、 初始化方法的過載不需要加override 和 func

3、 在swift中,沒有this,  這點需要注意

4、 is和

as的區別  is 判斷是否屬於某型別   as把型別轉換為某型別

5、 屬性的set

方法中  newvalue 表示賦值進來的值

1、 列舉  

a) 使用 toraw 

和 fromraw 

函式來在原始值和列舉值之間進行轉換。

b) switch 中必須要寫default

1、 使用 protocol 

來宣告乙個介面。

類、列舉和結構體都可以實現介面。

2、 使用 extension 

來為現有的型別新增功能,比如新增乙個計算屬性的方法。你可以使用擴充套件來給任意型別新增協議,甚至是你從外部庫或者框架中匯入的型別。

1、 在尖括號裡寫乙個名字來建立乙個泛型函式或者型別。

2、 在型別名後面使用 where 

來指定乙個需求列表

func anycommonelements where t: sequence, u: sequence, t.generat

ortype.element: equatable, t.generatortype.element == u.generatortype.

element> (lhs: t, rhs: u) -> bool {  

for lhsitem in lhs {  

for rhsitem in rhs {  

if lhsitem == rhsitem {  

return true  

return false  

anycommonelements([1, 2, 3], [3])

型別別名(type aliases)

就是給現有型別定義另乙個名字。你可以使用 

typealias 

關鍵字來定

義型別別名。

當條件可能為假時使用斷言,但是最終一定要保證條件為真,這樣你的**才能繼續運

行。swift  的  

string  

型別是值型別。如果您建立了乙個新的字串值,那麼當其進行常量、變數賦值操作或在函式

/方法中傳遞時,會進行值拷貝。在不同情況下,都會對已有字串值建立新副本,並對該新副本進行傳遞或賦值。

注意:和 cocoa  

中的  

nsstring  

不同,當您在  

cocoa  

中建立了乙個  

nsstring  

例項,並將其傳遞給乙個函式/

方法,或者賦給乙個變數,您永遠都是傳遞或賦值同乙個

nsstring  例項的乙個引用。除非您特別要求其進行值拷貝,否則字串不會進行賦值

新副本操作。

通過呼叫全域性  countelements  

函式,並將字串作為引數進行傳遞可以獲取該字串的字元數量。

可通過在形參的型別名後邊插入三個點符號(...

)來編寫可變形參。

注意:函式最多可以有乙個可變形參,而且它必須出現在引數列表的最後,以避免使

用多個形參呼叫函式引發歧義。如果你的函式有乙個或多個帶有預設值的形參,並且

還有可變形參,請將可變形參放在所有預設形參之後,也就是的列表的最末尾。

在 swift 

中您可以像任何其他型別一樣的使用函式型別。

func addtwoints(a: int, b: int) -> int {  

return a + b  

var mathfunction: (int, int) -> int = addtwoints  

巢狀函式預設對外界是隱藏的,但仍然可以通過它們包裹的函式呼叫和使用它。enclosing 

function 也可以返回乙個巢狀函式,以便在其他作用域中使用巢狀函式。

閉 包 是 功 能 性 自 包含 模組 , 可以 在代 碼中 被傳 遞和 使用 。

在  函式  章節中介紹的全域性和巢狀函式實際上也是特殊的閉包,閉包採取如下三 種形式之

一: 1.  全域性函式是乙個有名字但不會捕獲任何值的閉包 

2.  巢狀函式是乙個有名字並可以捕獲其封閉函式域內值的閉包 

3.  閉包表示式是乙個利用輕量級語法所寫的可以捕獲其上下文中變數或常量值的沒有名字的閉包 

函式的引數補充

1、 swift中使用let宣告的物件不能被賦值,基本資料結果也會變的不可變,當結果更複雜一點時:

a) 用let

宣告陣列時,陣列的長度雖然不可變,卻可以改變陣列元素的值,

b) 使用let宣告的dictionary是完全不可變的,

c) 使用let

宣告的類物件是可變的

d) 使用var和let

宣告的,int和string都是不可變的,但是var

宣告時可以對變數重新賦值

2、 swift的外部引數名

a) 在類外面寫的方法是需要加# 或者 自定義外部引數名的,預設沒有外部引數名

b) 在類裡面的方法是,從第二個形參開始就有預設的外部引數名,預設的外部引數名和內部引數名一致;當然,你也可以自定義外部引數名

c) 類方法的初始化方法是,從第乙個引數開始就有預設的外部引數名,預設的外部引數名和內部引數名一致;當然,你也可以自定義外部引數名

1、 swift的方法可變引數的定義

a) 方法的預設形參為常量形參,在方法內不可以直接改變形參的值

b) 在方法的形參前加var ,可定義形參為可變形參,在方法內可以直接改變形參的值

c) 在方法的形參前加inout關鍵字後,不能再用var

或let

修飾,其預設是var

型別的可變形參

學習心得(五)

1.陣列 下標只能為整型常量或整型表示式。為小數時,c編譯將自動取整 a 1.5 即a 1 2.二維陣列 儲存時按照行排列。只對部分元素賦初值時,未賦值的元素自動取0。3.scanf的例子 為了告訴大家scanf中若引數為陣列,就不需要加 老潭的書中有這樣乙個例子 main 我好奇 s s之間沒有隔...

學習心得 python學習心得

自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...

學習心得 我的學習心得

我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...