函式引數可以有預設值,當省略相應的引數時使用預設值。與其他語言相比,這可以減少過載數量。
fun read(b: array, off: int = 0, len: int = b.size) 如果乙個預設引數在乙個無預設值的引數之前,那麼該預設值只能通過使用命名引數呼叫該函式來使用:
fun foo(bar: int = 0, baz: int)
foo(baz = 1) // 使用預設值 bar = 0不過如果最後乙個 lambda 表示式引數從括號外傳給函式函式呼叫,那麼允許預設引數不傳值:
fun foo(bar: int = 0, baz: int = 1, qux: () -> unit)
foo(1) // 使用預設值 baz = 1
foo // 使用兩個預設值 bar = 0 與 baz = 1當函式返回單個表示式時,可以省略花括號並且在=符號之後指定**體即可
fun double(x: int): int = x * 2函式的引數可以用vararg修飾符標記
fun aslist(vararg ts: t): list
//允許將可變數量的引數傳遞給函式
val list = aslist(1, 2, 3)他們是成員函式或擴充套件函式 他們只有乙個引數 他們用 infix 關鍵字標註支援區域性函式,區域性函式可以訪問外部函式的區域性變數
fun dfs(graph: graph)
dfs(graph.vertices[0], hashset())
}高階函式是將函式用作引數或返回值的函式
fun lock(lock: lock, body: () -> t): t
finally
}//body擁有函式了理性:()->t。所以它應該是乙個不帶引數樹並且返回t 型別值的函式。 map方法
fun list.map(transform: (t) -> r): list 如果函式字面值只有乙個引數, 那麼它的宣告可以省略(連同 ->),其名稱是 it。
//如果生命乙個函式型別的可變空量,可以將整個函式型括在括號中並在其後加上問號
var sum: ((int, int) -> int)? = nulllambda表示式的完成語法形式
val sum = lambda 表示式總是被大括號括著, 完整語法形式的引數宣告放在大括號內,並有可選的型別標註, 函式體跟在乙個 -> 符號之後。如果推斷出的該 lambda 的返回型別不是 unit,那麼該 lambda 主體中的最後乙個(或可能是單個)表示式會視為返回值。
kotlin 提供了使用指定的 接收者物件 呼叫函式字面值的功能。 在函式字面值的函式體中,可以呼叫該接收者物件上的方法而無需任何額外的限定符。
//這樣的函式字面值的型別是乙個帶有接收者的函式型別
sum : int.(other: int) -> int
程式設計開發教程 反轉鍊錶
程式設計開發教程 反轉鍊錶,兩種方法 遞迴法思路 在反轉當前節點之前先反轉後續節點。這樣從頭結點開始,層層深入直到尾結點才開始反轉指標域的指向。簡 單的說就是從尾結點開始,逆向反轉各個結點的指標域指向。head 是前一結點的指標域 ps 前一結點的指標域指向當前結點 head.getnext 是當前...
BREW開發教程 3 BREW程式設計概念
乙個模組可以從brew資源檔案中讀取資料,從而使用應用程式可以獲取字串 影象 對話方塊資源。通過在資源檔案存入與語言或裝置相關的資訊,使用得編寫適應不同國家或裝置的應用成為可能。資源檔案可以通過brew的資源編輯器來生成二進位制資源檔案和相應的資源標頭檔案。開發brew應用,可以被編輯成可以模擬器和...
BREW開發教程 3 BREW程式設計概念
乙個模組可以從brew資源檔案中讀取資料,從而使用應用程式可以獲取字串 影象 對話方塊資源。通過在資源檔案存入與語言或裝置相關的資訊,使用得編寫適應不同國家或裝置的應用成為可能。資源檔案可以通過brew的資源編輯器來生成二進位制資源檔案和相應的資源標頭檔案。開發brew應用,可以被編輯成可以模擬器和...