函数类型作为返回类型

fun main() {
println(show("Demo"))

val lambdaFunction = showMethod("Jack") //注意lambdaFunction 这里的类型为(String,Int) -> String
println(lambdaFunction("Carl",20))
}
//普通函数
fun show(name:String): String {
return "name is $name"
}
//返回类型为函数
fun showMethod(name: String): (String,Int) -> String {
println("name is $name")
return { name: String, age: Int ->
"名字是:$name,年纪是$age"
}
}

对比普通函数,区别就是返回类型

Nothing类型

  • TODO函数的任务就是跑出异常,就是永远别指望运行成功,返回Nothing类型

函数实现

@kotlin.internal.InlineOnly
public inline fun TODO(reason: String): Nothing = throw NotImplementedError("An operation is not implemented: $reason")

反引号中的函数名

  • Kotlin可以使用空格和特殊字符对函数命名,不过函数名要用一对反引号括起来。
  • 为了支持Kotlin和Java互操作,而Kotlin和Java各自有着不同的保留关键字,不能作为函数名,使用反引号括住函数名就能避免任何冲突

便于测试

fun `~~fef0h!!特殊函数~~`(){
println("特殊函数")
}

fun main() {
`~~fef0h!!特殊函数~~`()
}

可以在编写测试用例的时候可以用

public class MyFunc {
public static void is(){
System.out.println("is invoked");
}
}

fun main() {
MyFunc.`is`()
}

上面主要是为了Java和Kotlin调用的时候的相互支持

匿名函数

  • 定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回
  • 匿名函数对Kotlin来说很重要,有了它,我们能够根据需要定制特殊规则,轻松定制标准库里的内置函数