下过雨的天空,星星特别明亮。
唯心提着包离开了研究室,今晚的补课依旧在空教室进行。
「还记得你写的重复十次Hello World!
的程序吗?」
诗忆点点头。「记得学姐提过,有其他更好的方式可以实现。」
fun main() {
println("Hello World!")
println("Hello World!")
println("Hello World!")
//...省略中间重复行数
println("Hello World!")
}
「嗯,这个方式就是回圈,回圈是重复的专家。不过Kotlin的回圈不只一种,最简单的是repeat
。」唯心迅速地更新了程序码。
fun main() {
repeat(10) {
println("Hello World!")
}
}
原本需要十行的程序码,现在只剩下三行。
「这⋯⋯真的是好简单易懂啊。」诗忆惊喜的睁大眼睛。
「不过,这样对次数的观察不太直观,所以我们就改成列印回圈变数,数字也减到五次吧,可以直接用预设的名字it
或是用->
另外帮变数命名。」唯心把程序码独立成函式另外命名成repeat5
。
fun repeat5() {
repeat(5) {
println(it)
}
}
fun repeat5index() {
repeat(5) { index ->
println(index)
}
}
「印出来的回圈变数是0, 1, 2, 3, 4
,确实是五次。但是五其实也有很多种组合,在某些时候我们会希望的是1, 2, 3, 4, 5
,这时可以改用for
搭配rangeTo()
。」
诗忆重复看了好几次程序码。「嗯?学姐我没在你的程序码里看到rangeTo()
函式啊?」
「喔,和之前说的四则运算子逻辑一样,这个..
符号就是rangeTo
函式的简写。」唯心在程序上加上了注解。
fun for1to5() {
for (index in 1..5) { //就是 1.rangeTo(5)
println(index)
}
}
「for
还可以跳着数、倒着数,比如十以下的奇数数量也是五。」唯心兴致来了,举出各种例子。
fun for1to10奇数() {
for (index in 1..10 step 2) {
println(index)
}
}
fun for1to9倒着数奇数() {
for (index in 9 downTo 1 step 2) {
println(index)
}
}
「有时候拿到的结束数字比范围大,可以自行减掉再用刚刚的rangeTo()
或是直接就用until
,因为until
不含上限。」
「什麽时候会结束数字比范围大啊?」诗忆好奇地问。
唯心指了指最初的程序码。「之前不是提到预设的索引是0开始
吗?所以相对於整个群体的数量,最後一个索引就是数量减一。」
fun for1until6() {
for(index in 1 until 6) {
println(index)
}
}
「而另一种回圈while
,在做到和for
同样的事时,写起来比较繁琐,所以我们通常是用在for
不能做到的地方,那就是只确定结束条件,不确定次数的情形。例如,需要等待其他函式回传的结果来结束回圈,所以也存在while(true)
的设计,这时会搭配break
跳出回圈,咳。」
fun while5() {
var index = 0
while(index < 5) {
println(index)
index++
}
}
诗忆听唯心的嗓音有些沙哑,急忙倒出保温瓶里的温水递给她。
唯心喝了几口温水後休息了一会儿,才继续说下去。
「最後一种回圈do while
,表面上和while
结果相同,但是有一个相当特殊的特性,就是至少会跑一次,所以就算是while(false)
这种极端的例子,也会印出0
。」
fun dowhile5() {
var index = 0
do {
println(index)
index++
} while(index < 5)
}
<<: Material UI in React [ Day 18 ] Drawer (侧边栏)
>>: 【把玩Azure DevOps】Day7 CI/CD从这里:设定第一个Pipeline(范本与编辑介面介绍)
阿~今天的笔记,真心觉得,给我来一口翻译蒟蒻吧,很多硬梆邦的东西,记不起来XD" ▉条文是...
让无生命的东西得到认知能力,仔细一看发现这节在讲 AI 的趋势...............深蓝和华...
前言 很开心能够确实每天发文,并且持续30天成功完赛! 虽然这些天的发文大多都是过去学习中累计下来的...
如果我有一个小猫类别,我想要这个小猫类别有飞行功能,你会怎麽做? 直接写一个有飞行功能的小鸟类别,然...
Q1. SQL 注入 是什麽? SQL 注入攻击也称为 SQL injection,网页有许多功能都...