risc-v中文社区

 找回密码
 立即注册
查看: 1951|回复: 1

[原创] Option的map filter foreach用法

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-10-18 10:28:26 | 显示全部楼层 |阅读模式
通常,我们对集合类使用map,filter,foreach,但Option也有map,filter,foreach方法,实验如下:
println("----------Option的map,filter,foreach用法----------")
val map = Map("France"->"Paris", "Japan"->"Tokyo", "China"->"Beijing")
val name = map.get("China")
println(name) //Some(Beijing)
val mapname = name.map(f=>f+"map")
println(mapname) //Some(Beijingmap)
val filtername = name.filter(f=>f.substring(0,1) > "D")
println(filtername) //None
val foreachname = name.foreach{
  case s:String => s + "foreach"
}
println(foreachname) //()
val name2 = map.get("China2") //None
println(name2)
val mapname2 = name2.map(f=>f+"map")
println(mapname2) //None
val filtername2 = name2.filter(f=>f.substring(0,1) > "D")
println(filtername2)//None
val foreachname2 = name2.foreach {
  case s:String => s + "foreach"
}
println(foreachname2) //()
也就是说,我们的实验对Option使用了集合的方法,也使用了模式匹配。
回复

使用道具 举报

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
 楼主| 发表于 2021-10-19 08:27:25 | 显示全部楼层
    val map = Map("zs"->10,"lisi"->12)
    val g = map.get("zs")
    println(if(g.isDefined) g.get else "None value") //10
    println(if(g.isEmpty) "empty" else g.get) //10
    println(g.getOrElse("null")) //10
    println(g.get) //10

    val g1 = map.get("szxxx")
    println(if(g1.isDefined) g1.get else "None value") //None value
    println(if(g1.isEmpty) "empty" else g1.get) //empty
    println(g1.getOrElse(30)) //30

    val map1 = Map(1->10,2->20)
    val g2 = map1.get(1)
    println(g2.isDefined) //true
    println(g2.isEmpty) //false
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-20 16:25 , Processed in 0.016977 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表