当前位置: 首页 > 知识库问答 >
问题:

Kotlin!!运算符用法使代码不清晰

华君浩
2023-03-14

我正在编写一个Kotlin应用程序,我已经学习了这门语言,我注意到要创建一个变量,必须显式定义它是否可以为空,然后使用?接线员。

TurboFragment fragment = null;

@Override
public void onCreate(Bundle savedInstanceState) {

    ...

    fragment = adapter.getCurrentFragment();
}
private var fragment: TurboFragment? = null

override fun onCreate(savedInstanceState: Bundle?) {

    ...

    fragment = adapter!!.currentFragment
    fragment!!.foo()
    var x = fragment!!.sampleInt
}

现在,每次我调用fragment的实例时,我都必须使用null-safe!!接线员。这使得我的代码一团糟,因为对于每一行我至少有一个!!运算符,如果它是如此频繁,看起来真的很不清楚,特别是如果你有5个或更多这样的变量。有没有一种方法可以简化代码或者这种语言的本质是那样的?

共有1个答案

钱劲
2023-03-14

请考虑使用后期初始化的属性。它们是为您的用例设计的。

private lateinit var fragment: TurboFragment

但是,您应该记住,在lateinit属性初始化之前访问它会引发异常。这意味着只有在完全确定它们将被初始化的情况下才应该使用它们。

print(fragment)  // UninitializedPropertyAccessException is thrown
 类似资料:
  • 我不能使用运算符&&或者,如果没有运算符,我如何格式化相同的代码?

  • 模板输出进可以使用几个运算符: 加法: {$a+$b} 减法: {$a-$b} 乘法: {$a \* $b} 除法: {$a/$b} 取余: {$a%$b} ++: {$a++} {++$a} --: {$a--} {--$a} 综合运算: {$a+$b+$c*$d}

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1798

  • 模板输出进可以使用几个运算符: 加法: {$a+$b} 减法: {$a-$b} 乘法: {$a * $b} 除法: {$a/$b} 取余: {$a%$b} ++: {$a++} {++$a} --: {$a--} {--$a} 综合运算: {$a+$b+$c*$d}

  • 问题内容: 以下是一个名为AT5G60410.gff的大文件的示例: 我在使用grep从中提取特定行时遇到了一些麻烦。我想提取所有在第三列中指定的“基因”或“外显子”类型的行。当这不起作用时,我感到很惊讶: 没有结果返回。我哪里出问题了? 问题答案: 您需要逃脱。以下应做的工作。

  • 本文向大家介绍Kotlin 空合并/Elvis运算符,包括了Kotlin 空合并/Elvis运算符的使用技巧和注意事项,需要的朋友参考一下 示例 有时希望以if-else方式评估可为空的表达式。Elvis运算符?:可以在Kotlin中用于这种情况。 例如: 如果 data?.first ()或数据本身产生 null 值,则上面的表达式返回“ Nothing here” ,否则返回 data?. f