gpt4 book ai didi

Scala:检查空值/空值并返回 0 的简洁方法

转载 作者:行者123 更新时间:2023-12-02 06:00:29 26 4
gpt4 key购买 nike

我需要在读取数据文件后将一些字符串值转换为整数。该字段可能为空,这会在尝试进行转换时导致错误。有没有一种简单的方法来检查 null(或可以转换为整数的适当值),如果不能转换则返回 0? getOrElse 似乎是一种可能性,但我不能完全让它工作。我可以编写一个可以很容易地完成它的函数,但我希望有一种更优雅/简洁的方法来做到这一点。

最佳答案

您可以使用 Try monad(已记录 here ),它有一个 getOrElse 方法:

import scala.util.Try
val zero = Try { "foo".toInt }.getOrElse(0)
val leet = Try { "1337".toInt }.getOrElse(0)

val parseOrZero: String => Int = x => Try(x.toInt) getOrElse 0
val lines = Seq("123", "42", "sdfd", null, "")
lines.map(parseOrZero)
->> res0: Seq[Int] = List(123, 42, 0, 0, 0)

或内联:

lines.map(x => Try(x.toInt) getOrElse 0)

Try 还有一个 toOption 方法,如果成功则获取 Some(value),否则获取 None异常(exception)。所以,如果你想过滤掉错误的条目而不是返回 0,你可以这样做:

lines.flatMap(x => Try(x.toInt).toOption)

Try 还具有所有有用的单子(monad)转换,如 mapflatMap 用于链接更多计算。

关于Scala:检查空值/空值并返回 0 的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com