網(wǎng)站首頁 編程語言 正文
對于函數(shù)來說,現(xiàn)在的語言越來越想把它往變量上靠。
確實對于函數(shù)來說,他應(yīng)該有很多變量的特性。
在Kotlin
中,定義函數(shù)是很簡單的一件事情,我覺得編程有的時候是被一些語言給高復(fù)雜了,命名很簡單的一些事情,還引入了很多的概念,其實這些對項目的開發(fā)一點用處都沒有,只是一些編程技巧罷了,就這個工程的可讀性和穩(wěn)定性一點用處也沒有。
函數(shù)聲明
函數(shù)的關(guān)鍵字為 fun
,其實一些比較新的語言在取這些關(guān)鍵字的時候,我建議還是有個一致性的規(guī)范,看多語言以后,你會發(fā)現(xiàn)有的語言命名函數(shù)是用fun
,有的是使用func
,其實這些關(guān)鍵字對功能的實現(xiàn)一點影響都沒有,不同的語言取不同的關(guān)鍵字,只是給編程使用者,添加了更多的負擔。
fun myAdd(a:Int,b:Int):Int{ return a+b }
這樣我們就添加了一個函數(shù)名為:myAdd
,兩個變量,a和b,返回值為Int
。為何Kotlin
的返回值是在后面呢?
其實Kotlin
這樣設(shè)計還是有一定的道理的,他讓函數(shù)和變量長得一樣,函數(shù)的類型就是他的返回類型,這樣跟變量一起來記憶,通用性還是很強的。
函數(shù)默認參數(shù)
有些語言,是沒有提供默認參數(shù)的,Kotlin
有提供,用了默認參數(shù)的函數(shù),用起來還是挺舒服的,比如你在讀別人的api的時候,你可以不需要把所有的參數(shù) 都讀懂,默認就可以了。
fun isA(v:Char,ignorecase:Boolean=true):Boolean{ var c:Char = '1' if (ignorecase) c = v.lowercaseChar() return c == 'a' }
如果你有多個的默認參數(shù)的話,可以用指定名字的方式來對默認變量進行賦值,而不用太多的考慮參數(shù)順序的問題。
var ba:Boolean = isA('A', ignorecase = false)
可變參數(shù)
Kotlin
對參數(shù)的支持,還是給了很多的空間,可變參數(shù)來說,平常是比較少見,但有一個你肯定是用過的,那就是打印日志的時候。
fun myLog(vararg args: String) { println(args::class) println(args.contentToString()) for (i in args.indices) { println(args[i]) } }
我們可以這樣來調(diào)用:
myLog("1","2","3")
Kotlin
可變參數(shù),可以理解為變量是一個數(shù)組或者是一個鏈表,這樣是最好理解的,也應(yīng)該本來就是這樣。
小結(jié)
函數(shù)在編程中,不可能不被用到的,他是我們程序的復(fù)用的基礎(chǔ),在這節(jié)中,我們也討論了一些語言的設(shè)計問題,一個好的語言,他需要足夠的簡單,有一定的通用性,這樣對于編程者,那才是真正的有好。
原文鏈接:https://blog.csdn.net/weixin_40425640/article/details/127844210
相關(guān)推薦
- 2023-02-03 TypeScript?中?as?const使用介紹_其它
- 2023-05-29 docker如何對已經(jīng)啟動的容器添加目錄映射(掛載目錄)_docker
- 2022-11-02 Python中turtle庫常用代碼匯總_python
- 2022-09-20 android原生實現(xiàn)多線程斷點續(xù)傳功能_Android
- 2022-11-14 開發(fā)板NFS掛載方案
- 2022-03-15 React?Router?V6更新內(nèi)容詳解_React
- 2023-12-10 Invalid bound statement (not found): 各種原因
- 2022-06-28 C語言多線程開發(fā)中死鎖與讀寫鎖問題詳解_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支