当前位置:网站首页>kotlin中函数作为参数和函数作为返回值实例练习
kotlin中函数作为参数和函数作为返回值实例练习
2022-07-31 01:17:00 【汤米粥】
kotlin中函数作为参数和函数作为返回值,在工作中写代码有时会被卡住,怎么写都提示语法错误,今天专门研究一下几种常用的用法。
package com.example.test
import android.util.Log
import java.util.*
class KotlinSample {
//直接定义函数
//带参数,没有返回值的函数
private var myPrint: (msg: String) -> Unit = { msg -> Log.e("xxx5",msg) }
//带参数,有返回值的函数
private var hello : (msg: String) -> String = { "hello ${it.uppercase()}!!" }
//函数作为参数
fun callMethods() {
method1 {
var hello = "hello world"
Log.e("xxx1", hello)
hello
}
method2 {
var hello = "hello world"
Log.e("xxx2", hello)
}
method3("hello world") { msg ->
Log.e("xxx3", msg)
}
//函数作为返回值
var method4 = method4("hello world")
method4.invoke()
//使用定义的函数
myPrint.invoke("hello world")
var greet = hello("zhang san")
myPrint.invoke(greet)
}
//返回String 但是不需要return 直接将字符串写在最后一行
private fun method1(method: () -> String) {
method.invoke()
}
//Unit表示没有返回值
private fun method2(method: () -> Unit) {
method.invoke()
}
//函数作为参数,有一个输入参数时。不能直接带给它,需要另外一个参数传进来。
private fun <T> method3(msg1: T, method: (msg: T) -> Unit) {
method.invoke(msg1)
}
//函数作为返回值
private fun method4(str: String): () -> Unit {
Log.e("xxx4", "这一部分不返回,直接运行")
return {
var strNew = str.uppercase(Locale.getDefault())
Log.e("xxx4", strNew)
}
}
}运行结果:
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx1: hello world
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx2: hello world
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx3: hello world
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx4: 这一部分不返回,直接运行
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx4: HELLO WORLD
2022-07-28 11:05:04.309 20589-20589/com.example.test E/xxx5: hello world
2022-07-28 11:05:04.309 20589-20589/com.example.test E/xxx5: hello ZHANG SAN!!
边栏推荐
猜你喜欢
随机推荐
ROS2系列知识(3):环境配置
解析云原生消息流系统 Apache Pulsar 能力及场景
深度学习可以求解特定函数的参数么?
埃拉托斯特尼筛法
软件测试工作3年了,谈谈我是如何从刚入门进阶到自动化测试的?
VS warning LNK4099: No solution found for PDB
Typescript14 - (type) of the specified parameters and return values alone
API 网关 APISIX 在Google Cloud T2A 和 T2D 的性能测试
ShardingSphere之读写分离(八)
Shell变量与赋值、变量运算、特殊变量
Jetpack Compose learning (8) - State and remeber
Zabbix干啥用?
DOM系列之scroll系列
35. 反转链表
ShardingSphere's unsharded table configuration combat (6)
BOM系列之Navigator对象
"Actual Combat" based on part-of-speech extraction in the field of e-commerce and its decision tree model modeling
System design. Short chain system design
TypeScript在使用中出现的问题记录
ECCV 2022 华科&ETH提出首个用于伪装实例分割的一阶段Transformer的框架OSFormer!代码已开源!









