SlideShare a Scribd company logo
kotlin
函數
函式 (function)
• 函式 (function) 是程序抽象化 (procedure abstraction) 的實踐方式,
使用函式有以下的好處:
• 減少撰寫重覆的程式碼
• 將程式碼以有意義的方式組織起來
• 在相同的流程下,可藉由參數調整程式的行為
• 藉由函式庫可組織和分享程式碼
• 做為資料結構 (data structures) 和物件 (objects) 的基礎
kotlin-big-nerd-ranch ch4 function
kotlin-big-nerd-ranch ch4 function
函數頭
函數體
局部變數
可見性修飾符 函數聲明關鍵字 函數名 函數參數 返回類型
可見性修飾符 Visibility Modifiers
• If you do not specify any visibility modifier, public is used by default,
which means that your declarations will be visible everywhere;
• If you mark a declaration private, it will only be visible inside the file
containing the declaration;
• If you mark it internal, it is visible everywhere in the same module;
• protected is not available for top-level declarations.
函數名的寫法
• formatHealthStatus以小寫字母開頭,單詞間不帶下劃線,形成駝
峰式樣。
• 函數命名時都應遵循這種官方命名約定。
單表達函數
fun sum(a: Int, b: Int): Int {
return a + b
}
fun sum(a: Int, b: Int) = a + b
Unit函數
Function returning no meaningful value
fun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}
fun printSum(a: Int, b: Int) {
println("sum of $a and $b is ${a + b}")
}
具名函數參數
Nothing類型
• TODO函數的任務就是拋出異常——換句話說,就是永遠別指望它
運行成功——返回Nothing類型。
• 什麼時候會用到TODO函數呢?它的名字可以揭示答案:它告訴你
仍然需要去做的事。以下是一個未實施函數,它調用了TODO函數。
函數重載
反引號中的函數名
• Kotlin和Java各自有不同的保留關鍵字,不能用作函數名。使用反
引號括住函數名就能避免任何潛在衝突
• 在Kotlin中,is是個保留關鍵字(你會在第14章中看到,Kotlin的標
準庫有個is操作符,可以用來檢查實例類型)。而在Java中,is不
是關鍵字,所以是有效的方法名。有了反引號,就可以在Kotlin中
調用Java的is方法了。
參考
• https://e.m.jd.com/static/read/dist/index.html?ebookId=30530757&name=K
otlin%E7%BC%96%E7%A8%8B%E6%9D%83%E5%A8%81%E6%8C%87%E5%8D
%97
• https://kotlinlang.org/docs/reference/basic-syntax.html
• 可見性修飾符
• https://www.kotlincn.net/docs/reference/visibility-modifiers.html
• https://github.com/tinda/kotlin-big-nerd-ranch

More Related Content

PPTX
Feature toggle
PPT
Flex开发实践经验谈(谢敏)
PDF
03.wls depoly jdbc
PPT
Java SE 8 技術手冊第 5 章 - 物件封裝
PDF
Chapter 4 models
PPTX
我們與Azure DevOps的距離
PPTX
TQC+ 程式語言 Python 05:函式
PPT
Django敏捷开发 刘天斯
Feature toggle
Flex开发实践经验谈(谢敏)
03.wls depoly jdbc
Java SE 8 技術手冊第 5 章 - 物件封裝
Chapter 4 models
我們與Azure DevOps的距離
TQC+ 程式語言 Python 05:函式
Django敏捷开发 刘天斯

Similar to kotlin-big-nerd-ranch ch4 function (20)

PPTX
Code guidelines
PPTX
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
PPTX
9. meta-programming
PDF
Clipper@datacon.2019.tw
PDF
實踐 Clean Architecture(實作高可用性的軟件架構)
PPTX
2020 11-27 Taiwan DDD Conference
PPTX
开源应用日志收集系统
PPTX
Python程式精修
PPTX
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
PDF
Clojure简介与应用
PDF
使用 laravel 的前與後
PDF
合久必分,分久必合
PDF
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
PPTX
Introduction to ASP.NET MVC and MVC 5 Features
PPTX
Ioc & in direction
PPTX
01.uliweb介绍
PPTX
数据库持续集成
PDF
20170830 2nd sre build and deployment scripting
DOC
中远公司 Java培训资料
PDF
Java Build Tool course in 2011
Code guidelines
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
9. meta-programming
Clipper@datacon.2019.tw
實踐 Clean Architecture(實作高可用性的軟件架構)
2020 11-27 Taiwan DDD Conference
开源应用日志收集系统
Python程式精修
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Clojure简介与应用
使用 laravel 的前與後
合久必分,分久必合
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Introduction to ASP.NET MVC and MVC 5 Features
Ioc & in direction
01.uliweb介绍
数据库持续集成
20170830 2nd sre build and deployment scripting
中远公司 Java培训资料
Java Build Tool course in 2011
Ad

kotlin-big-nerd-ranch ch4 function

Editor's Notes

  • #11: 在Kotlin之前,函數不返回任何東西該怎麼描述,是令很多語言頭疼的事情。有些語言搞出了void關鍵字,意思是“沒有返回類型;不會帶來什麼,忽略它”。這似乎流於表面:如果函數不返回任何東西,就忽略類型。 而且,不幸的是,void這種解決方案無法解釋現代語言的一個重要特徵:泛型。作為現代編譯語言的一個特徵,泛型讓編程更為靈活。Kotlin的泛型可以讓函數支持很多類型,我們會在第17章學習它。 泛型和Unit及void有什麼關係?對於如何應對什麼都不返回的泛型函數,使用void關鍵字的語言沒有好辦法。void類型是不存在的,事實上它的意思是,“類型信息不重要,忽略它好了”。既然無法模糊、泛泛地描述,自然,這些語言也就不能描述清楚什麼也不返回的泛型函數。 通過使用Unit作為返回類型,Kotlin解決了這一難題。Unit表示一個函數不返回任何東西,同時,也能兼容需要和一些類型打交道的泛型函數。無論有無類型,都不是問題,這正是Kotlin使用Unit的原因。