结识班代:四则运算子函式多载 Arithmetic Operators Function Overloading

本校刚入学的新生,一般来说,会分配一个相同科系的室友,和两个其他科系的新生。

诗忆就是那个例外。

她错过新生登记宿舍的时间,虽然後来候补成功,但是宿舍和同科系的新生分开,室友也是其他科系的学姐。

好处是不用担心系上发现学姐帮她补课,但坏处很明显,就是很难打入系上的圈子。

这点尤其在上午课程,其他人三三两两踏进教室的时候特别明显。

再加上教室内的男女差距比例,她乾脆就放弃和其他学生打招呼,专心上课,毕竟要补进度的不是只有学姐那门课。

没想到中间休息的时候,坐在後面的短发女生突然伸手戳她和她说话。「你需要考古题吗?」

诗忆认出了对方是班代方绮巧,急忙回应:「喔,要的,谢谢。」

「其他人都来领了,只有你没有,我还以为你有其他打算呢。」方绮巧给出考古题後没有马上结束对话,继续和诗忆攀谈。

「我忙忘了。」诗忆脸微红。这是实话,光是补进度就时间不够用了。

「你也有选修Kotlin程序设计吧?你对函式那章熟不熟?」方绮巧直接坐到诗忆旁边的空位,把讲义上的内容拿给她看。

fun main() {
    println(add(1, 3))
}
fun add(number1: Int, number2: Int): Int {
    return number1 + number2
}

「我知道传入13的参数後结果会印出4。」绮巧说。

诗忆点点头,学姐和她说过,从函式括号里传入的都称为参数,参考的『参』,英文是parameter

fun add(number1: Int, number2: Int): String {
    return "v" + number1 + number2
}

「可是我试过,这个印出的不是v4而是v13⋯⋯而我如果把"v"放到中间或是最後,程序连跑都不能跑。」

fun add(number1: Int, number2: Int): String {
    return number1 + number2 + "v"
}
fun add(number1: Int, number2: Int): String {
    return number1 + "v" + number2
}

「嗯?」诗忆觉得这好像超出了函式的范围?

目前她学到的内容,就是具名函式function要用简称fun开头,後面接着函式名字,函式参数要注明类别但不能加上valvar,如果需要用到函式的处理结果,就要用return回传,否则只会印出kotlin.Unit这个类别名字。然後回传时要注明回传类别,其中注明Unit和没注明是一样的意义。最後,大括号里是函式处理的内容,也是参数的生存空间。

她很确定学姐没提到加这个"v"的顺序影响。

「抱歉,这个我也不懂。不过我可以帮你问一个懂的人。」诗忆拨通唯心的电话。

唯心听完了诗忆的描述,回答道:「首先,程序和数学一样,是从上到下、左到右的顺序处理。所以她写的函式执行顺序是字串"v"先加上数字1变成字串"v1",然後再加入下一个数字3变成字串"v13"。如果那位同学想要"v4"的结果,可以把数字计算的地方用括号包起来。」

fun add(number1: Int, number2: Int): String {
    return  "v" + (number1 + number2)
}

「其次,+其实是plus函式的简写,在各种类别里实现的方式不同。简单点说,就是类别有实现字串.plus(数字)字串.plus(字串),但没有实现数字.plus(字串)。像这样同个名字的函式拥有不同的参数,是Kotlin函式多载Function Overloading的特性。」

诗忆复述唯心的话给绮巧,把传过来的四则运算子对照函式图也拿给她看。

图1

绮巧看着图片几秒後,立刻拿出手机要和诗忆交换联络方式。「原来你认识这麽厉害的人,以後我们就是好朋友了,其他科目的考古题我有拿到就会给你一份,再有程序问题我就找你帮忙啦。」

诗忆看着突然变得非常热情、气势逼人的绮巧,下意识地吞了吞口水,乖乖加了通讯软件好友。


<<:  Day16 测试写起乃 - 测试覆盖率

>>:  Firebase来帮忙资料上传 Day 12

[Day 19] 第一主餐 pt.11-财报资料,我全都要

上一篇我们修改了资料库 并且成功地把BeautifulSoup的资料送到Database内了 今天我...

【在厨房想30天的演算法】Day 17 演算法 : 搜寻 search I 线性搜寻、二分搜寻

Aloha!又是我少女人妻 Uerica!最近发现写铁人赛文章不但可以学习知识,还能训练自己如何当时...

[Day5]UTXO未花费的交易输出

HI!今天要介绍UTXO!如果对UTXO有兴趣,欢迎继续看下去! 今天会分成UTXO介绍、参观实例...

React Native Fastlane

Setting Up fastlane Install Homebrew $ /usr/bin/ru...

Day 28 Docker Portainer 图像化容器管理工具

在 Day 22 所提到的 Ctop 好用的 docker 容器监控工具 毕竟还是在命令列上,对於现...