问题标签 [kotlin-null-safety]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
null - Kotlin 如果不为空
with
使用iff a var
is not的最简洁方法是什么null
?
我能想到的最好的是:
kotlin - Kotlin 在 if else 中检查 null 两次
我有一个带有变量的项目datePurchased
,它可以为空。根据购买日期,我生成一个标签。当我检查 datePurchased 是否为空时,在 else 分支中我仍然必须检查是否为空。它说智能转换是不可能的,因为它是一个可变属性。
这是我到目前为止所尝试的:
kotlin - 如何在 Kotlin 中惯用地测试非空、非空字符串?
我是 Kotlin 的新手,我正在寻求帮助来重写以下代码以使其更优雅。
如果我使用以下代码:
编译器会抱怨
谢谢。
kotlin - Kotlin 可空变量赋值
在 Kotlin 中,此代码是否有更短的语法:
首先我尝试了这个:
但后来我意识到这不是一个任务,所以代码什么都不做。然后我尝试了:
哪个有效,但有点冗长。我会期待这样的事情:
但不幸的是,这不起作用。有什么方法可以用简短的语法来完成这个吗?
我知道我可以这样做:
kotlin - 结合 null 安全性和 assertNotNull
在测试中我们通常有assertNotNull
,但它不会执行从可为空类型到非可空类型的智能转换。我必须写这样的东西:
assertNotNull
仅通过呼叫执行智能投射是否是一种解决方法?你如何解决?
kotlin - 如何将 lateinit Kotlin 属性设置为 null
下面的类有一个非常独特的生命周期,这需要我暂时清空lateinit
属性
} }
这是框架使用它的方式。
我的lateinit
属性是由 dagger 注入的,我需要将它们设置为null
in onDestroyView
- 或者有内存泄漏。然而,据我所知(没有反思),这在 kotlin 中是不可能的。我可以使这些属性为空,但这会破坏 Kotlin 的空安全性的目的。
我不太确定如何解决这个问题。理想情况下,可能有某种类型的注释处理器会生成 java 代码以自动清除特定变量onDestroyView
?
null - 类属性的 Kotlin 空安全性
如何避免使用!!
类的可选属性
我应该创建一个局部变量吗?我认为使用!!
不是一个好习惯
kotlin - Kotlin 空值检查错误
我使用 Java 库。在异常类中有“localizedMessage”字段和“description”字段。我不知道为什么,但是“描述”(即 java 字符串)被识别为字符串!通过 Kotlin,当 "description" 为 null 时,条件 description == null 返回 false。代码示例:
或没有猫王:
它总是尝试显示“描述”,但调试模式下的“评估表达式”在描述 == null 时返回 true(如预期的那样)。
Kotlin 版本是 1.1.1
kotlin - Kotlin .let {} null 安全大概是错误的错误
使用该.let { }
功能时,我注意到在执行以下操作时:
在这种情况下,您必须保证存储桶的安全性, bucket?.
或者bucket!!
在使用?.let
then 我注意到执行以下操作时已经保证了空安全性:
虽然在存储桶的属性上使用 let 而不是直接在存储桶上使用,但我想知道这是故意还是 Kotlin 插件中的错误(在这种情况下,我在 Android Studio 中遇到了这个问题)
附加信息是,在这种情况下,bucket 是一个local val
while assignmentVariantName 是一个可为空的 var。
null - 一个班轮中的 Kotlin 中 listOf() 为 null,而不是 listOf(value) 为 null?
让f()
返回一个可为空的值。
我想做的是,
如果f()
为空,则获取一个空列表,
否则如果f()
不为空,则获取单个项目的列表value
。
在 Scala 中,我们可以这样做:
或更详细地说
在 Kotlin 中,没有(假设没有 Funktionale 库),并且 null在 ScalaOption
中没有toList()
不同的 ( )。None: Option
我们有 Elvis 运算符,但 null 将在listOf()
函数内部,所以它将是
我们想要的 null 是listOf(/*no argument */)
,但 Elvis 运算符需要一个参数,因此listOf(f() ?: )
会导致编译错误。
至少我们可以做到
但它是一个两班轮。
有什么表达吗?
我将在类的主要构造函数默认参数中使用这个表达式,所以如果它不是一个单行,它将被括在括号中,所以像这样:
这看起来很丑,不是吗?