Scala最佳做法:简单的Option []用法
发布时间:2020-12-16 19:01:39 所属栏目:安全 来源:网络整理
导读:作为一个 Java到Scala切换器,我经常发现自己重写空处理东西,如 val itemOpt: Option[Item] = items.get(coords) // "items" is something like a Mapif (itemOpt.isDefined) { val item = itemOpt.get // do something with item,querying item fields a lot
作为一个
Java到Scala切换器,我经常发现自己重写空处理东西,如
val itemOpt: Option[Item] = items.get(coords) // "items" is something like a Map if (itemOpt.isDefined) { val item = itemOpt.get // do something with item,querying item fields a lot of times,for example if (item.qty > 10) { storeInVault(item.name,item.qty,coords) } else { storeInRoom(item) } } 我想这看起来很丑陋,它看起来像是从Java的一个代码重写的: Item item = items.get(coords); if (item != null) { // do something with item,for example } 它在Java中看起来也很丑陋,但至少它是一条线.在Scala中处理这种简单案例的最佳做法是什么?我已经知道flatMap并且平坦化来处理Option [Stuff]的集合,我知道getOrElse来处理默认值.我梦想着像: items.get(coords).doIfDefined(item => // do stuff with item ) 但是我在Option API中看不到任何东西. 解决方法
非常受欢迎的使用模式:
val item: Option[Int] = None val result = item map (_ + 1) getOrElse 0 所以你只需使用map来转换值,如果它被定义. 如果您只想使用值,则存储在Option中,那么只需使用foreach: item foreach { it => println(it) } 您可以看到,Option还支持许多收集方法,因此您实际上不需要学习新的API.您可以将其视为具有1或0个元素的集合. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读