加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala Map#获取和返回Some()

发布时间:2020-12-16 09:22:31 所属栏目:安全 来源:网络整理
导读:Im使用scala Map#get函数,并且对于每个准确的查询,它返回为Some [String] 有没有一个简单的方法来删除一些? 例: def searchDefs{ print("What Word would you like defined? ") val selection = readLine println(selection + ":nt" + definitionMap.get
Im使用scala Map#get函数,并且对于每个准确的查询,它返回为Some [String]

有没有一个简单的方法来删除一些?

例:

def searchDefs{
    print("What Word would you like defined? ")
    val selection = readLine
    println(selection + ":nt" + definitionMap.get(selection))
  }

当我使用此方法并使用以下输入:

What Word would you like defined? Ontology

返回值为:

Ontology:
    Some(A set of representational primitives with which to model a domain of knowledge or discourse.)

我想删除Some()周围.

任何提示?

解决方法

有很多方法来处理Option类型.首先,但是,确实意识到有更好的是,而不是一个潜在的空参考!不要试图摆脱它,因为你习惯了Java如何工作.

正如其他人最近所说:坚持几个星期,每次你必须回到不提供选项类型的语言时,你会呻吟.

现在,对于你的问题,最简单和最危险的方法是:

mymap.get(something).get

在一个对象上调用.get检索内部的对象.但是,如果您有一个None(例如,如果该键不在您的地图中),它会给您一个运行时异常.

一个更清洁的方法是使用Option.foreach或Option.map,如下所示:

scala> val map = Map(1 -> 2)
map: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)

scala> map.get(1).foreach( i => println("Got: " + i))
Got: 2

scala> map.get(2).foreach( i => println("Got: " + i))

scala>

您可以看到,这可以让您执行一个声明,当且仅当您具有实际值.如果选项为None,则不会发生任何事情.

最后,在这样的选项类型上使用模式匹配也很受欢迎:

scala> map.get(1) match {
     |  case Some(i) => println("Got something")
     |  case None => println("Got nothing")
     | }
Got something

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读