如何在scala中的单个语句中检查null?
发布时间:2020-12-16 09:45:16 所属栏目:安全 来源:网络整理
导读:在我的scala代码中: QueueManager.add(getObject) 其中getObject是返回类型为QueueObject的对象的方法。 def getObject : QueuObject = { val response = //some response return response} 有没有一种方法可以检查响应是否为空,同时添加QueueObject?我知
在我的scala代码中:
QueueManager.add(getObject) 其中getObject是返回类型为QueueObject的对象的方法。 def getObject : QueuObject = { val response = //some response return response } 有没有一种方法可以检查响应是否为空,同时添加QueueObject?我知道我可以这样做: if (getObject != null) QueueManager.add(getObject) 但我不想增加一个缩进级别。有没有一个内联的运算符? 谢谢。 解决方法
尽量避免在Scala中使用null。这只是与Java的互操作性。在Scala中,对可能为空的东西使用选项。如果您正在调用可能返回null的Java API方法,请立即将其包装在选项中。
def getObject : Option[QueueObject] = { // Wrap the Java result in an Option (this will become a Some or a None) Option(someJavaObject.getResponse) } 注意:您不需要将其放在val中或使用显式 def getObject : Option[QueueObject] = Option(someJavaObject.getResponse) 除了其他人已经显示的内容(例如调用选项,可能会有点混淆),您也可以调用映射(如果不需要,忽略地图操作的结果): getObject map QueueManager.add 如果Option是None,这将不起作用,如果它是Some,则调用QueueManager.add。 我发现使用一个常规的,如果比使用任何这些“技巧”只是为了避免缩进级别更清晰和简单。你也可以写一行: if (getObject.isDefined) QueueManager.add(getObject.get) 或者,如果要处理null而不是使用Option: if (getObject != null) QueueManager.add(getObject) 编辑 – Ben是对的,如果它有副作用,请小心不要多次调用getObject;更好地写这样: val result = getObject if (result.isDefined) QueueManager.add(result.get) 要么: val result = getObject if (result != null) QueueManager.add(result) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |