繼續瀏覽,只能說是繼續瀏覽了,根本就不是踩坑嘛,都踩不平。
坑1、第一天就見到fun關鍵字了,結果現在才告訴我這是宣告函式,呼叫使用傳統的「變數名
=函式名(引數)」,呼叫成員函式用「點表示法」,引數列表用「
name:type=value
」表示法並用逗號隔開。這文件,已經無力吐槽。
坑2、中綴表示法呼叫函式時函式需要滿足是成員函式或者擴充套件函式、只有乙個引數、用infix標註。
infix funint.sss(x: int): int
fun
main(args: array
)
其中,3需要和函式所擴充套件的物件同型別,在該函式中可以用
this
取得,2
為引數x。坑3
、override標記的函式引數列表不能有預設值。
坑4、使用預設引數呼叫函式時,需按順序傳入最後乙個無預設值的引數及其之前的所有引數。如下:需按序傳入other及其之前的引數。故建議把有預設值的引數靠後,無預設值的靠前,以便呼叫。當然,也可以在呼叫時指定引數名,這樣就不用管順序了。
funreformat(str: string = "",
normalizecase: boolean = true,
uppercasefirstletter: boolean = true,
dividebycamelhumps: boolean = true,
other: int,
wordseparator: char = 'c')
fun
main(args: array
)
坑5、函式返回值為unit型別時可以不宣告並且省略
return
關鍵字。反之,其它具有塊**體的函式都得顯示指定返回型別,因為
kotlin
不推斷具有塊**體的返回型別。
坑6、單表示式函式可以省略花括號,如返回值型別可推斷時可以省略返回值宣告。
fundouble(x: int) = x * 2
坑7、可以用vararg定義可變引數。在下面的
demo
中,可變引數為陣列,故如果已經定義好乙個陣列,可使用伸展操作符
*直接傳入。此外,若有多個引數,使用命名引數語法傳入。
funaslist(vararg ts: t, sa: int): list
fun
main(args: array
)
坑8、在前面提到過,kotlin的函式不依靠於類,可以在頂層也可以宣告在區域性作用域作為成員函式或者擴充套件函式。區域性函式可以訪問外部函式的區域性變數。
坑9、成員函式是定義在類或者物件內的函式,用「點表示法」來呼叫。
坑10、泛型函式在函式名前用尖括號宣告。
fun坑11singletonlist(item: t): list
、尾遞迴函式用tailrec標記。。。不懂,遞迴就遞迴嘛,還來個啥子尾遞迴。
坑12、高階函式是將函式作為引數或者返回值的函式。呼叫時使用「::
」操作符進行呼叫或者傳入乙個
lambda
表示式。
funlock(lock: lock, body: () -> t): t finally
}
坑13、lambda表示式總是被大括號括著。(喲呵,終於開始介紹
lambda
表示式了)
坑14、如果函式最後乙個引數為lambda表示式,可以在圓括號以外指定它。
坑15、如果函式字面值只有乙個引數,那麼可以省略宣告並用「it
」來指代。
坑16、下劃線用於未使用的變數的地方。
額。。。這天氣太熱了,一不小心就睡著了,醒來都頭暈乎乎的,後面的一句話也描述不上來,等明天再看一遍。。。
學習kotlin第12天 lambda表示式
繼續昨天的,從昨天的第14個坑開始。坑1 以map為例。文件上為如下 呼叫時由於 lambda 表示式在圓括號以外,而圓括號中已無其它引數,故可以省略 fun list map transform t r list fun main args array println doubled 在idea中...
python學習第11天
一.locals 和 globals函式 1.locals函式 獲取當前作用域中的所有內容 locals如果在函式外面,呼叫locals 獲取的是列印之前的所有變數,返回字典,是全域性空間作用域 locals如果在函式裡面,呼叫locals 獲取的是呼叫之前的所有變數,返回字典,是區域性空間作用域 ...
java學習筆記 第11天
建立視窗之後無法關閉 ctrl alt delete 直接殺程序 xml extensible markuplanguage xml 描述事物本身 xsl 事物的表現形式 dtd schema 定義xml的語法 與html的區別 更有利於資料的描述,交換 html不具有擴充套件性,xml可以定義新的...