为什么Scala在for循环中返回Unit值类型?

ccQ*_*ein 1 scala

我写了一个for循环来遍历Map,我希望这个函数在找到某个值时立即返回键(键和值都是Int类型)

var hs:Map[Int,Int] = Map(1 -> 1, 2 -> 2)
for ((k,v) <- hs) {
  if (v == 1)
    return k   
}
Run Code Online (Sandbox Code Playgroud)

但是,scala 给我错误消息:

error: type mismatch;
 found   : Unit
 required: Int
  for ((k,v) <- hst)
             ^
one error found
Run Code Online (Sandbox Code Playgroud)

然后我改为

var result = 0
for ((k, v) <- hst){
  if (v == 1)
    result = k
}
result
Run Code Online (Sandbox Code Playgroud)

然后,效果很好。为什么第一个版本存在类型问题?

che*_*ohi 5

@D.Peter 解释了编译错误,它缺少returnfor 这个子句

Scala中,您可以使用find来执行此操作,例如:

hs.find(_._2 == 1).map(_._1).getOrElse(0) // get or return default value.
Run Code Online (Sandbox Code Playgroud)