Kotlin 循环

当您处理数组时,经常需要遍历所有元素。

要遍历数组元素,请使用 for 循环和 in 操作符:

示例

输出 cars 数组中的所有元素:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
for (x in cars) {
println(x)
}

您可以遍历各种类型的数组。在上面的示例中,我们使用了一个字符串数组。

在下面的示例中,我们遍历一个整数数组:

示例

val nums = arrayOf(1, 5, 10, 15, 20)
for (x in nums) {
println(x)
}

传统的 For 循环

Java 和其他编程语言不同,Kotlin 中没有传统的 for 循环。

Kotlin 中,for 循环用于遍历数组、范围以及其他包含可计数值的事物。

Kotlin 范围

使用 for 循环,您还可以使用 .. 创建值的范围:

示例

打印整个字母表:

for (chars in 'a'..'x') {
println(chars)
}

您还可以创建数字范围:

示例

for (nums in 5..15) {
println(nums)
}

注意:第一个和最后一个值包含在范围内。

检查值是否存在

您还可以使用 in 操作符检查值是否存在于范围内:

示例

val nums = arrayOf(2, 4, 6, 8)
if (2 in nums) {
println("存在!")
} else {
println("不存在。")
}

示例

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
if ("Volvo" in cars) {
println("存在!")
} else {
println("不存在。")
}

中断或继续一个范围

您还可以在范围/for 循环中使用 breakcontinue 关键字:

示例

nums 等于 10 时停止循环:

for (nums in 5..15) {
if (nums == 10) {
break
}
println(nums)
}

示例

跳过循环中的 10 并继续下一个迭代:

for (nums in 5..15) {
if (nums == 10) {
continue
}
println(nums)
}

Kotlin 函数

函数是只有在调用时才运行的一段代码。

您可以将数据(称为参数)传递给函数。

函数用于执行某些操作,它们也被称为方法。

预定义函数

事实证明,您已经知道函数是什么。在本教程中,您一直在使用它!

例如,println() 是一个函数。它用于向屏幕输出/打印文本:

示例

fun main() {
println("Hello World")
}

创建您自己的函数

要创建您自己的函数,请使用 fun 关键字,并写出函数名称,后跟括号 ()

示例

创建一个名为 myFunction 的函数,该函数应该输出一些文本:

fun myFunction() {
println("I just got executed!")
}

调用函数

现在您已经创建了一个函数,可以通过调用它来执行。

要在 Kotlin 中调用函数,写出函数名,后跟两个括号 ()

在下面的示例中,myFunction() 被调用时会打印一些文本(操作):

示例

fun main() {
myFunction() // 调用 myFunction
} // 输出 "I just got executed!"

如果您愿意,可以多次调用一个函数:

示例

fun main() {
myFunction()
myFunction()
myFunction()
} // I just got executed!
// I just got executed!
// I just got executed!

函数参数

信息可以作为参数传递给函数。

参数在函数名称之后指定,在括号内。您可以添加任意数量的参数,只需用逗号分隔。请注意,您必须指定每个参数的类型(IntString 等)。

下面的示例有一个函数,它接收一个名为 fname 的字符串参数。当调用函数时,我们传递一个名字,它在函数内部用于打印全名:

示例

fun myFunction(fname: String) {
println(fname + " Doe")
} fun main() {
myFunction("John")
myFunction("Jane")
myFunction("George")
} // John Doe
// Jane Doe
// George Doe

当一个参数传递给函数时,它被称为实参。所以,从上面的示例中:fname 是一个参数,而 JohnJaneGeorge 是实参。

多个参数

您可以拥有任意数量的参数:

示例

fun myFunction(fname: String, age: Int) {
println(fname + " is " + age)
} fun main() {
myFunction("John", 35)
myFunction("Jane", 32)
myFunction("George", 15)
} // John is 35
// Jane is 32
// George is 15

注意:使用多个参数时,函数调用必须具有与参数数量相同的实参,并且实参必须以相同的顺序传递。

返回值

在上面的示例中,我们使用函数输出一个值。在下面的示例中,我们将使用函数返回一个值并将其赋值给一个变量。

要返回一个值,请使用 return 关键字,并在函数的括号后指定返回类型(在此示例中为 Int):

示例

具有一个 Int 参数和 Int 返回类型的函数:

fun myFunction(x: Int): Int {
return (x + 5)
} fun main() {
var result = myFunction(3)
println(result)
} // 8 (3 + 5)

使用两个参数

示例

具有两个 Int 参数和 Int 返回类型的函数:

fun myFunction(x: Int, y: Int): Int {
return (x + y)
} fun main() {
var result = myFunction(3, 5)
println(result)
// 8 (3 + 5)

返回值的简写语法

还有一种更简短的语法来返回值。您可以使用 = 操作符代替 return,而无需指定返回类型。Kotlin 足够聪明,可以自动找出返回类型:

示例

fun myFunction(x: Int, y: Int) = x + y

fun main() {
var result = myFunction(3, 5)
println(result)
// 8 (3 + 5)

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

Kotlin 循环与函数详解:高效编程指南的更多相关文章

  1. KVC/KVO原理详解及编程指南

    一.简介 1.KVC简介 2.KVO简介 二.KVC相关技术 1.Key和Key Path 2.点语法和KVC 3.一对多关系(To-Many)中的集合访问器方法 4.键值验证(Key-Value V ...

  2. 【转】 KVC/KVO原理详解及编程指南

    原文地址:http://blog.csdn.net/wzzvictory/article/details/9674431 前言: 1.本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的 ...

  3. 转:KVC/KVO原理详解及编程指南

      作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/9674431 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或 ...

  4. STL之map与pair与unordered_map常用函数详解

    STL之map与pair与unordered_map常用函数详解 一.map的概述 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称 ...

  5. linux select函数详解

    linux select函数详解 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状 ...

  6. 【P2158】仪仗队&欧拉函数详解

    来一道数论题吧. 这个题一眼看上去思路明确,应该是数论,但是推导公式的时候却出了问题,根本看不出来有什么规律.看了马佬题解明白了这么个规律貌似叫做欧拉函数,于是就去百度学习了一下这东西. 欧拉函数的含 ...

  7. 详解Python编程中基本的数学计算使用

    详解Python编程中基本的数学计算使用 在Python中,对数的规定比较简单,基本在小学数学水平即可理解. 那么,做为零基础学习这,也就从计算小学数学题目开始吧.因为从这里开始,数学的基础知识列位肯 ...

  8. Linux C popen()函数详解

    表头文件 #include<stdio.h> 定义函数 FILE * popen( const char * command,const char * type); 函数说明 popen( ...

  9. fork()函数详解

    linux中fork()函数详解(原创!!实例讲解) (转载)    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程 ...

  10. [转]javascript console 函数详解 js开发调试的利器

    javascript console 函数详解 js开发调试的利器   分步阅读 Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该 ...

随机推荐

  1. 调用了这么久的JS方法是长在对象、类、值本身还是原型链上?

    调用了这么久的JS方法是长在对象.类.值本身还是原型链上? JavaScript这门语言总是能带给我惊喜,在敲代码的时候习以为常的写法,退一步再看看发现自己其实对很多基操只有表面的使用,而从来没思考过 ...

  2. Typora行内公式识别不了

    Typora行内公式识别不了,主要是因为行内公式属于LaTeX扩展语法,并非Markdown的通用标准 需要在Typora的"文件"-"偏好设置"-" ...

  3. Linux信号量

    查看信号量 [root@localhost ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) ...

  4. Java基础:线程的三种创建方式

    一.继承Thread类 定义一个类继承线程类Thread 重写run()方法 创建线程对象 调用线程对象的start()方法创建线程 Thread类的常用API setName(String name ...

  5. 2023年台州市初赛Misc

    2023年台州市初赛Misc 这是神马 冰蝎流量,找到key <?php @error_reporting(0); session_start(); $key="144a6b22963 ...

  6. axios和AJAX的区别

    axios和ajax的区别 Axios和Ajax都是用于处理网络请求和与服务器进行通信的技术,但它们之间存在一些关键的区别:12 一.技术基础:Ajax(Asynchronous JavaScript ...

  7. Java-JDBC的对象DriverManager,Connection,ResultSet,PreparedStatement,工具类:JDBCUTILS,JDBC控制事务

    1. 概念 Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 JDBC本质:其实是官方(sun)公司的一套操作所有关系型数据库的规则,即接口.各个数据 ...

  8. Solo 开发者周刊 (第10期):Sora 之后,谁是被遗忘的?谁又是被仰望的?

    这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 好文推荐 Sol ...

  9. PowerBuilder编程新思维10.5:外传2(PowerPlume下一代开发解决方案)

    万里归来年愈少 PB编程新思维10.5:外传2(PowerPlume下一代解决方案) 前言 今天我们就来盘点一下,PB下一代开发的所有技术可能性.所谓下一代开发技术,就是指脱离或半脱离PBVM的应用开 ...

  10. TP5.0学习笔记

    TP5目录结构介绍 application目录是应用目录,我们整个应用所有的内容都写在这个目录中,在后续开发中,我们更多的时候都是在编写这个目录中的文件.在它里边有一个index文件夹,它叫做模块儿, ...