
具体示例
-
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)
}


















![[机器学习]XGBoost(3)——确定树的结构](https://i-blog.csdnimg.cn/direct/99fb4a07aeda47a4ba1777a4383b677a.png)