網站首頁 編程語言 正文
對于函數來說,現在的語言越來越想把它往變量上靠。
確實對于函數來說,他應該有很多變量的特性。
在Kotlin
中,定義函數是很簡單的一件事情,我覺得編程有的時候是被一些語言給高復雜了,命名很簡單的一些事情,還引入了很多的概念,其實這些對項目的開發一點用處都沒有,只是一些編程技巧罷了,就這個工程的可讀性和穩定性一點用處也沒有。
函數聲明
函數的關鍵字為 fun
,其實一些比較新的語言在取這些關鍵字的時候,我建議還是有個一致性的規范,看多語言以后,你會發現有的語言命名函數是用fun
,有的是使用func
,其實這些關鍵字對功能的實現一點影響都沒有,不同的語言取不同的關鍵字,只是給編程使用者,添加了更多的負擔。
fun myAdd(a:Int,b:Int):Int{ return a+b }
這樣我們就添加了一個函數名為:myAdd
,兩個變量,a和b,返回值為Int
。為何Kotlin
的返回值是在后面呢?
其實Kotlin
這樣設計還是有一定的道理的,他讓函數和變量長得一樣,函數的類型就是他的返回類型,這樣跟變量一起來記憶,通用性還是很強的。
函數默認參數
有些語言,是沒有提供默認參數的,Kotlin
有提供,用了默認參數的函數,用起來還是挺舒服的,比如你在讀別人的api的時候,你可以不需要把所有的參數 都讀懂,默認就可以了。
fun isA(v:Char,ignorecase:Boolean=true):Boolean{ var c:Char = '1' if (ignorecase) c = v.lowercaseChar() return c == 'a' }
如果你有多個的默認參數的話,可以用指定名字的方式來對默認變量進行賦值,而不用太多的考慮參數順序的問題。
var ba:Boolean = isA('A', ignorecase = false)
可變參數
Kotlin
對參數的支持,還是給了很多的空間,可變參數來說,平常是比較少見,但有一個你肯定是用過的,那就是打印日志的時候。
fun myLog(vararg args: String) { println(args::class) println(args.contentToString()) for (i in args.indices) { println(args[i]) } }
我們可以這樣來調用:
myLog("1","2","3")
Kotlin
可變參數,可以理解為變量是一個數組或者是一個鏈表,這樣是最好理解的,也應該本來就是這樣。
小結
函數在編程中,不可能不被用到的,他是我們程序的復用的基礎,在這節中,我們也討論了一些語言的設計問題,一個好的語言,他需要足夠的簡單,有一定的通用性,這樣對于編程者,那才是真正的有好。
原文鏈接:https://blog.csdn.net/weixin_40425640/article/details/127844210
相關推薦
- 2022-12-05 Android不同版本兼容性適配方法教程_Android
- 2022-03-31 用C語言實現排雷游戲_C 語言
- 2022-12-25 React安裝node-sass失敗解決方案分享_React
- 2022-05-06 C語言基礎知識點指針的使用_C 語言
- 2022-04-30 Python的進制轉換和ASCLL轉換你了解嗎_python
- 2022-12-03 FFmpeg?Principle分析Out?put?File?數據結構_Android
- 2022-08-02 利用go語言實現Git?重命名遠程分支??_Golang
- 2022-05-13 (Qt)使用QCommandLineParser進行程序的命令行解析
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支