Kotlin|Kotlin let,run,with,also,apply 函数分析
let
- 是扩展函数;
- 作为扩展函数,把自己作为参数传递进去,(T);
- 可以在作用域范围内使用it作为引用;
- 返回不同类型的值。
public inline fun T.let(block: (T) -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block(this)
}
run
- 是扩展函数;
- 作为扩展函数调用block: T.()
- 所有的范围内,T可以被称为this;
- 返回不同类型的值。
public inline fun T.run(block: T.() -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block()
}
also
- 是扩展函数;
- 作为扩展函数,把自己作为参数传递进去,(T);
- 可以在作用域范围内使用it作为引用;
- 返回T本身即this。
public inline fun T.also(block: (T) -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block(this)
return this
}
with
- 不是扩展函数;
- 所有的范围内,T可以被称为this;
- 返回不同类型的值。
public inline fun with(receiver: T, block: T.() -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return receiver.block()
}
apply
- 是扩展函数;
- 作为扩展函数调用block: T.()
- 所有的范围内,T可以被称为this;
- 返回T本身即this。
public inline fun T.apply(block: T.() -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
return this
}
推荐阅读
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)
- gitlab|gitlab 通过备份还原 admin/runner 500 Internal Server Error
- android防止连续点击的简单实现(kotlin)
- retrofit2-kotlin-coroutines-adapter|retrofit2-kotlin-coroutines-adapter 超时引起的崩溃
- Kotlin泛型的高级特性(六)
- Kotlin基础(10)-代理模式在kotlin中的使用
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- iOS|iOS runtime应用整理
- Swift5.0|Swift5.0 UITexview的基本使用
- Android|Android Kotlin实现AIDL跨进程通信