标准函数
with
第一个参数是一个类型或者对象,第二个参数是lambda表达式。其中第一个参数为第二个参数提供上下文,返回值是最后一行。案例代码:
Kotlin
fun main() {
val list = mutableListOf<String>()
var ret = with(list) {
add("1")
remove("1")
toString()
}
println(ret)
}
run
只有一个参数,是lambda表达式。返回值是最后一行,且它需要一个对象去调用:
Kotlin
fun main() {
var ret = mutableListOf<String>().run {
add("1")
add("2")
remove("1")
toString()
}
println(ret)
}
apply
和run类似,但是无法指定返回值。默认返回的是调用对象本身:
Kotlin
fun main() {
var ret = mutableListOf<String>().apply {
add("1")
add("2")
remove("1")
}
println(ret.toString())
}
静态方法
单例类/companion object
Kotlin本身没有static关键字来支持静态函数,但是它本身有单例类的特性可以支持类似静态函数的功能。但是若想只把某个类的某个函数声明为静态函数的话,就需要加上companion object:
Kotlin
class A{
fun bb(){
println("bb")
}
companion object{
fun aa(){
println("aa")
}
}
}
fun test(){
A.aa()
}
fun main() {
test()
}
注解(@JvmStatic)
Kotlin
class A{
fun bb(){
println("bb")
}
companion object{
@JvmStatic
fun aa(){
println("aa")
}
}
}
fun test(){
A.aa()
}
fun main() {
test()
}
注解只能用在单例类和companion object下。