scala中.map(...)和.map {...}之间的区别是什么

例如:

  • List(1, 2, 3).map(i=> i + 1)

  • List(1, 2, 3).map {i => i + 1}

他们都得到相同的结果:List(2, 3, 4)

但是对于此示例List(1, 2).map { println("Hi"); _ + 1 }结果如下,为什么 '嗨' 只打印一次?

Hi
List[Int] = List(2, 3)

通常,您可以使用括号括起简单的函数参数:

l.map( x => x * 2 )

用大括号括起更复杂的代码块或部分函数,​​包括case模式匹配:

复制代码
l.map{ x =>
  val y = x * 2
  y
}

l.map{
  case x if x%2 == 0 => x * 2
  case _ => 0
}
复制代码
至于Hi仅打印一次的原因,List(1, 2).map{ println("Hi"); _ + 1 }与List(1, 2).map{ println("Hi"); x => x + 1 }没有区别。要在println次迭代中包含map:
List(1, 2).map{ x => println("Hi"); x + 1 }
// Hi
// Hi
// res1: List[Int] = List(2, 3)

 

posted @   Bonnie_ξ  阅读(280)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示