具体示例
-
run
:val result = someObject.run { // 这里可以使用 this this.someMethod() }
-
let
:val result = someObject?.let { // 这里使用 it it.someMethod() }
-
with
:val result = with(someObject) { // 这里使用 this someMethod() }
-
apply
:val obj = SomeClass().apply { // 这里使用 this property = value }
-
also
:someObject.also { // 这里使用 it println(it) }
总结
- 结果的场景。
let
适合处理潜在的null
值。apply
用于初始化对象,返回对象本身。also
用于在不改变对象的情况下执行附加操作。
根据需求选择合适的函数,可以提高代码的可读性和简洁性。
例如?.run
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
val students=intent.getParcelableArrayListExtra("data",Student::class.java)
setContent {
Day04Theme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
students?.run {
SecondScreen(modifier = Modifier.padding(innerPadding),this)
}
}
}
}
}
如果不适用则换成下面代码
if (students != null) {
SecondScreen(modifier = Modifier.padding(innerPadding), students)
}