从 some(x) 到 scala 中的真实类型
from some(x) to real type in scala
当我从 Map[Int,Int]
类型的映射中获取元素时,我得到 Some(24)
,但我不能对其使用 +,-,*,/
操作,因为它不是 [=13] =].你能告诉我如何从该映射中获取 Int
类型值而不是 Some(24)
吗?
那是因为 Map.get( key )
returns 一个 Option
.
您可以使用以下更安全的方法,
您可以为此使用模式匹配,
val yourIntOption: Option[ Int ] = yourMap.get( "someKey" )
// yourIntOption will be Some( i ) if key found or None if no such key.
yourIntOption match {
case Some( i ) => println( i + 1 )
case None => println( "None" )
}
或者,您可以选择留在 Option
monad
,
val yourIntOption: Option[ Int ] = yourMap.get( "someKey" )
val intOptionAfterAdding: option[ Int ] = yourIntOption.map( i => i + 1)
此外,您可以使用以下不安全(可以抛出异常)方法
val yourInt = yourMap( "someKey" )
// will throw a NoSuchElementException if this key is not found.
或者,
val yourIntOption: Option[ Int ] = yourMap.get( "someKey" )
val yourInt = yourIntOption.get
// will throw a NoSuchElementException if the option was None.
或者,您可以使用某种 Ok-ok 方法
val yourIntOrDefaultMinusOne = yourMap.getOrElse( "someKey", -1 )
Map
有一个 apply
方法可以直接 return 值。你可以这样称呼它:
val v = map(key)
但是,请注意,如果键不在地图中,它将抛出 NoSuchElementException
。我建议您熟悉 Option
范式。
当我从 Map[Int,Int]
类型的映射中获取元素时,我得到 Some(24)
,但我不能对其使用 +,-,*,/
操作,因为它不是 [=13] =].你能告诉我如何从该映射中获取 Int
类型值而不是 Some(24)
吗?
那是因为 Map.get( key )
returns 一个 Option
.
您可以使用以下更安全的方法,
您可以为此使用模式匹配,
val yourIntOption: Option[ Int ] = yourMap.get( "someKey" )
// yourIntOption will be Some( i ) if key found or None if no such key.
yourIntOption match {
case Some( i ) => println( i + 1 )
case None => println( "None" )
}
或者,您可以选择留在 Option
monad
,
val yourIntOption: Option[ Int ] = yourMap.get( "someKey" )
val intOptionAfterAdding: option[ Int ] = yourIntOption.map( i => i + 1)
此外,您可以使用以下不安全(可以抛出异常)方法
val yourInt = yourMap( "someKey" )
// will throw a NoSuchElementException if this key is not found.
或者,
val yourIntOption: Option[ Int ] = yourMap.get( "someKey" )
val yourInt = yourIntOption.get
// will throw a NoSuchElementException if the option was None.
或者,您可以使用某种 Ok-ok 方法
val yourIntOrDefaultMinusOne = yourMap.getOrElse( "someKey", -1 )
Map
有一个 apply
方法可以直接 return 值。你可以这样称呼它:
val v = map(key)
但是,请注意,如果键不在地图中,它将抛出 NoSuchElementException
。我建议您熟悉 Option
范式。