Scala:解构声明(用例子通俗易懂)

一句话解释

解构声明就是"拆包裹"------把打包好的数据(比如元组、列表)拆开,把里面的值直接赋给变量。


举个栗子 🌰

假设你的代码里有这样一行:

scala复制代码

复制代码
val (math, english, physics) = scores.unzip3

这里发生了什么?

  1. scores的结构

    scala复制代码

    复制代码
    // 假设scores是一个包含多个三元组的列表,比如:
    List( (80,64,78), (65,87,58), (44,71,77) )
    • 每个三元组代表一个学生的三门课成绩,比如(80,64,78)表示数学80,英语64,物理78
  2. unzip3的作用

    • 把"粘在一起"的三门课成绩拆分成三个独立的列表: scala复制代码

      复制代码
      ( 
        List(80, 65, 44),    // 所有数学成绩
        List(64, 87, 71),    // 所有英语成绩
        List(78, 58, 77)     // 所有物理成绩
      )
  3. 解构赋值

    scala复制代码

    复制代码
    val (math, english, physics) = 拆出来的三个列表
    • math = List(80, 65, 44)(所有数学成绩)
    • english = List(64, 87, 71)(所有英语成绩)
    • physics = List(78, 58, 77)(所有物理成绩)

相当于把三个包裹📦一次性拆开,把里面的东西分别放进三个盒子!


为什么要用解构?

  1. 代码更短:不用写三行分别取每个列表
  2. 更直观:变量名直接对应科目(math, english, physics)

其他常见场景(举个超简单例子)

scala复制代码

复制代码
// 场景1:元组解构
val 学生信息 = ("张三", 18, 90)
val (姓名, 年龄, 分数) = 学生信息  // 直接拆开
println(姓名) // 输出"张三"

// 场景2:列表解构
val List(第一科, 第二科, _*) = List("数学", "英语", "物理", "化学")
println(第一科) // "数学"
println(第二科) // "英语"
// _* 表示剩下的科目不管了

注意事项 ⚠️

  • 形状要对得上 :左边变量个数要和右边数据结构的元素个数一致

    scala复制代码

    复制代码
    // 错误示范:元组只有3个元素,左边却要拆成4个变量
    val (a,b,c,d) = (1,2,3) // 会报错!

这下应该明白啦!其实就是把打包的数据拆开用的快捷方式~ 😄

相关推荐
阳光是sunny8 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦8 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny8 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
-银雾鸢尾-9 小时前
C#中的StringBuilder相关方法
开发语言·c#
皮皮林5519 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
努力的小雨9 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司11 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求