基础函数定义
kotlin一般定义函数的方法如下
/*定义一个公有函数为f1,第一个传入数据定义为v1,
v1是String类型,函数返回字符串所以填写String类型*/
public fun f1(v1: String): String{
// 返回v1加字符串" World!"
return "$v1 World!"
}
这其中有一点十分有趣,kotlin支持在字符串中直接
$变量名
,前提是后面没有紧跟着的字符,不然就需要使用${变量名}
来解决
那没有返回的函数呢?如何填写类型?
这就引出了Kotlin的特殊类型Unit
,它可以在没有输出的情况下依然使函数返回一个对象
// 将返回类型换成Unit,可以省略": Unit"不写,编译器看得懂
public fun f1(v1: String): Unit{
// 打印v1加字符串" World!"
println("$v1 World!")
// 返回Unit,这句话也可以省略不写,编译器也看得懂
return Unit
}
请注意!第一个Unit指代的是返回类型,而第二个Unit则是一个具体对象,虽然同名,但绝不一样
同样,我们也可以定义私有函数:
// 定义一个私有函数为f2,传入字符串定义为v2,函数返回String类型
private fun f1(v1: String): String{
// 返回v1加字符串" World!"
return "$v1 World!"
}
在继承方式中,可以直接忽略public
不写,这样子我们就能获得两个等价的表达
传递变量
变量的传递十分简单,只需要在调用时传入即可
// 程序入口点
fun main(){
val a = "1"
val b = "2"
val c = "3"
// 将变量a,b,c导入函数push2,再打印返回的字符串
println(push2(a,b,c))
}
// 定义一个公有函数push2,传入字符串定义为x,y,z
fun push2(x: String,y: String,z: String): String{
// 返回字符串
return "倒数${z+y+x}"
}
运行的结果就是
倒数321
来尝试一次吧!
让我们写一个完整的一段代码
// 声明所属包
package tenshi.first.demo
// 定义编译时常量v
const val v = "Hello"
// 程序入口点
fun main(){
// 将变量v导入函数hello
hello(v)
}
// 定义一个公有函数hello,传入字符串定义为v1
fun hello(v1: String){
// 打印v1加字符串" World!"
println("$v1 World!")
}
输出结果就是喜闻乐见的
Hello World!