Kotlin的本地后期初始化

我怎样才能在函数中初始化一个变量,因为lateinit不允许用于局部变量? 否则,这种情况的好模式是什么:

 private fun displaySelectedScreen(itemID: Int) { //creating fragment object val fragment: Fragment //initializing the fragment object which is selected when (itemID) { R.id.nav_schedule -> fragment = ScheduleFragment() R.id.nav_coursework -> fragment = CourseworkFragment() R.id.nav_settings -> { val i = Intent(this, SettingsActivity::class.java) startActivity(i) } else -> throw IllegalArgumentException() } //replacing the fragment, if not Settings Activity if (itemID != R.id.nav_settings) { val ft = supportFragmentManager.beginTransaction() ft.replace(R.id.content_frame, fragment)// Error: Variable 'fragment' must be initialized ft.commit() } drawerLayout.closeDrawer(GravityCompat.START) } 

One Solution collect form web for “Kotlin的本地后期初始化”

when是一个表达,如此

 val fragment: Fragment = when (itemID) { R.id.nav_schedule -> ScheduleFragment() R.id.nav_coursework -> CourseworkFragment() ... else -> throw IllegalArgumentException() } 

将为这个用例工作。

本地变量没有lateinit等价物。 其他的语言结构像tryif也是表达式,所以这是不需要的。

  • 错误在http请求返回错误时处理UI线程
  • GridView只在单击项目时删除第一个项目。 基于Java>Kotlin
  • header / impl关键字在kotlin中意味着什么?
  • 为什么智能铸造错误发生在kotlin?
  • 未解决的参考kotlin变量
  • 空指针在使用Kotlin的片段中引用RecyclerView时出错
  • 静态导入Kotlin Companion方法?
  • Kotlin类实例声明不正确
  • Android Studio和Kotlin:未解决的参考:也
  • 一个简单的kotlin类与mockito测试引起MissingMethodInvocationException
  • 我可以使用kotlin.reflect来获得一个字段的值
  • Kotlin language will be the best programming language for Android.