Scala编程基础
酒城译痴无心剑
国家三级笔译。一手代码一手诗,酸甜苦辣寸心知。杏坛泊梦千秋事,万古云山日迟迟。讲授高等数学、Java高级程序设计、动态网站设计与开发(JSP、Servlet)、企业信息系统设计与开发(Spring Boot)、智能移动终端应用开发(Android)、Python Web开发(Django)、大数据离线分析(Hadoop、Hive、Spark)、计算机专业英语等课程,教学深入浅出,语言生动、经验丰富,深受学生好评。指导学生参加移动应用开发省赛和国赛,多次获奖,被授予优秀指导教师称号。热爱翻译,曾翻译西奥尼·帕帕斯数学科普读物《天天数学》与两千余首诗词,已形成独特的译诗风格。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1.9 掌握Scala抽象类与特质
本次实战聚焦于 Scala 面向对象编程中的抽象类与特质两大核心机制。首先通过定义抽象类 Person 及其子类 Teacher,掌握了抽象类不可实例化、支持带参构造器及单继承的特性,并学会了子类如何强制实现父类的抽象成员及重写具体方法。随后深入探索了支持多继承的特质(Trait),通过创建 Pettable、Runnable 等特质,利用 extends 和 with 关键字在 Cat 与 Bird 类中进行灵活混入,实现了代码的高效复用与多态。原创 2026-05-14 16:29:54 · 114 阅读 · 0 评论 -
1.8.3 掌握Scala类与对象 - Scala基本骨架方法
本次实战通过三个核心案例深入解析了 Scala 类的基本骨架方法。首先,通过 Student 类展示了 Scala 摒弃 Java 繁琐命名的简洁特性,演示了系统自动生成 get/set 方法以及手动重写带校验逻辑的 setter。其次,利用 Person 类详细拆解了主构造器与辅助构造器的定义规则及调用链机制,体现了构造器参数的灵活性。最后,通过 Book 类重写了 toString 方法,实现了对象信息的直观展示。原创 2026-05-14 09:15:17 · 169 阅读 · 0 评论 -
1.8.2 掌握Scala类与对象 - 单例对象与伴生对象
本次实战通过三个案例深入解析了 Scala 中 `object` 的核心机制,展示了其如何替代 Java 的 `static` 关键字。首先,通过 `MathUtils` 定义了存放常量与工具方法的独立单例对象;其次,利用 `Person` 类与其同名对象演示了“伴生对象”特性,实现了工厂方法创建实例及访问类的私有成员;最后,通过 `Logger` 对象实现了全局唯一的日志系统,验证了单例对象的延迟初始化与全局状态共享能力。原创 2026-05-13 13:39:54 · 226 阅读 · 0 评论 -
1.8.1 掌握Scala类与对象 - Scala类
本次实战通过两组对比鲜明的案例,带你快速入门Scala面向对象编程的核心。首先,通过创建User类,我们掌握了Scala普通类的定义方式,了解了如何使用private修饰符封装成员变量,以及如何通过new关键字实例化对象并调用其公开方法。随后,我们深入探索了Scala极具特色的样例类(case class),以Student为例,不仅体验了免写new的便捷实例化,还验证了样例类在保留自定义业务方法的同时,极大简化了数据封装。原创 2026-05-13 11:30:43 · 376 阅读 · 0 评论 -
1.7.6 掌握Scala函数 - Scala尾递归
本次实战通过三个经典案例深入浅出地讲解了Scala中尾递归(Tail Recursion)的应用与优势。首先,通过计算阶乘的实例,展示了如何利用辅助函数和累积器将普通递归转换为尾递归,有效避免了因深度递归导致的栈溢出风险。其次,打印斐波那契数列的案例不仅实践了尾递归,还结合了用户交互,使代码更具实用性。最后,列表求和案例则演示了尾递归在处理集合数据结构时的强大能力,通过模式匹配优雅地实现了遍历与累加。原创 2026-05-13 10:45:00 · 245 阅读 · 0 评论 -
1.7.5 掌握Scala函数 - Scala可变参数
Scala的可变参数(Varargs)功能允许函数接收不定数量的同类型参数,通过在参数类型后添加*实现,函数内部以Seq形式处理。本节通过三个案例展示其用法:首先演示基础的可变参数求和函数;其次介绍如何使用: _*语法将现有集合(如Array、List)展开并传入可变参数函数;最后探讨了可变参数与默认参数结合的高级技巧,利用多参数列表解决直接混合使用的冲突问题,增强了函数的灵活性和实用性。原创 2026-05-13 10:19:20 · 331 阅读 · 0 评论 -
1.7.4 掌握Scala函数 - Scala闭包
本次实战旨在深入掌握Scala函数式编程中的核心特性——闭包。闭包能够捕获并持有其外部作用域中的自由变量,即使外部作用域已结束,依然能跨作用域访问和使用这些变量。实战通过三个经典案例展开:首先利用闭包封装私有状态,实现了一个能够记忆并递增的计数器;其次构建函数工厂,演示了如何通过捕获不同参数动态生成具有特定行为的函数;最后通过延迟执行案例,展示了闭包如何将代码与上下文“打包”,实现任务的延时回调。通过动手编码与运行,将直观体会闭包在状态保持、动态生成及异步编程中的强大应用。原创 2026-05-13 08:50:53 · 178 阅读 · 0 评论 -
1.7.3 掌握Scala函数 - 神奇占位符
本次Scala函数实战主要聚焦于“神奇占位符”下划线(`_`)的灵活运用,通过三个递进的案例深入理解其简化代码的核心作用。原创 2026-05-12 18:41:54 · 153 阅读 · 0 评论 -
1.7.2 掌握Scala函数 - Scala函数种类
本次实战通过文件处理与函数操作两大场景,系统演示了Scala函数式编程的核心要素。从封装在类中的成员方法,到仅在函数内部可见的局部函数,再到无名的匿名函数,逐步展现了函数定义的灵活性。通过高阶函数接收或返回函数,实现了逻辑的抽象与复用。结合文件读取、条件筛选和动态行为生成等实际案例,全面掌握了Scala函数作为一等公民的强大能力与编程范式。原创 2026-05-11 11:33:53 · 180 阅读 · 0 评论 -
1.7.1 掌握Scala函数 - 声明Scala函数
本次实战系统讲解了 Scala 中显式与隐式函数的声明规则及应用。首先通过五种加法函数变体,展示了显式声明中返回值推断、return 省略及 Unit 类型的语法细节;接着演示了利用循环计算阶乘的逻辑。随后重点介绍了隐式函数(Lambda 表达式)的赋值调用方式,并结合 map、foreach 等高阶函数算子,演示了打印三角形及等差数列求和的案例,体现了 Scala 简洁的函数式编程风格。原创 2026-05-10 19:00:32 · 102 阅读 · 0 评论 -
1.6.5 掌握Scala数据结构 - 集合
深入探讨了 Scala 数据结构中的集合体系,核心在于理解不可变与可变集合的本质区别。不可变集合是函数式编程的基石,强调数据的安全性与持久化,任何增删改操作均不改变原集合,而是返回包含更新内容的新集合,天然具备线程安全特性。原创 2026-05-09 23:03:23 · 210 阅读 · 0 评论 -
1.6.4 掌握Scala数据结构 - 元组
本次实战以Scala元组为核心,先掌握其概念、创建(圆括号赋值/元组类)、访问(_N/productElement)、迭代(productIterator/模式匹配)及转字符串(toString/mkString)等基础操作,理解其作为轻量级不可变容器的特性。随后结合文件读取,通过“读取文本→拆分单词→映射键值对→分组求和”的流程,用元组承载单词与频次,完成词频统计,串联元组操作与集合处理,实现从理论到实践的落地,掌握函数式编程中数据聚合与处理的核心思路。原创 2026-05-09 11:04:52 · 97 阅读 · 0 评论 -
1.6.3 掌握Scala数据结构 - 映射
Scala映射分为不可变与可变两种:不可变映射默认属于scala.collection.immutable.Map,创建后键值对不可修改,通过updated或+操作会生成新映射;可变映射属于scala.collection.mutable.Map,支持原地修改。两者均支持contains判断键存在性及getOrElse获取值。可变映射可通过map(key) = value或+=添加/更新元素,通过-=或remove方法删除元素,后者能返回删除结果。原创 2026-05-08 16:15:35 · 240 阅读 · 0 评论 -
1.6.2 掌握Scala数据结构 - 列表
本次实战深入讲解了Scala中不可变列表与可变列表的核心操作。首先,详细演示了不可变列表的创建与元素添加,重点强调了其不可变特性——任何添加或合并操作(如::、++)都会生成新列表而不改变原列表。接着,介绍了可变列表ListBuffer的使用,包括元素的动态添加、插入、移除以及列表的合并与排序。最后,通过学生信息二维列表的创建与遍历,以及列表统计等实例,展示了如何在实际场景中高效处理集合数据。原创 2026-04-02 11:38:59 · 115 阅读 · 0 评论 -
1.6.1 掌握Scala数据结构 - 数组
本次实战系统讲解了Scala数组的核心操作,涵盖定长数组与变长数组。定长数组需初始化时指定长度或元素,类型推断严格,遍历支持传统for、增强for及foreach算子,常用方法如sum、max、sorted等不改变原数组。变长数组(ArrayBuffer)支持动态增删,通过+=、append添加元素,remove、-=删除元素,insert插入元素(索引越界会报错,等于长度时等效于追加),合并可用++=或appendAll。原创 2026-03-31 17:08:16 · 112 阅读 · 0 评论 -
1.1.2 Windows上安装Scala
本次实战旨在Windows环境下完成Scala编程环境的搭建与基础验证。首先,需从官网下载Scala 2.12.15的MSI安装包,将其安装至指定目录(如C:\Program Files (x86)\scala),并配置SCALA_HOME环境变量及Path路径,确保命令行能识别Scala指令。环境配置完成后,需验证Java(建议JDK 11以下)与Scala版本,确认安装成功。原创 2026-03-27 11:06:25 · 142 阅读 · 0 评论 -
1.5 掌握Scala内建控制结构
本次实战聚焦Scala内建控制结构,通过多案例深入掌握核心语法与应用。从条件表达式入手,学习单双分支及多分支语法,理解类型推断机制,结合年龄判断、闰年判别案例,对比Scala与Java函数式特性差异;掌握块表达式语法,明确其返回最后语句值的特性。在循环结构中,通过for循环实现整数输出、素数统计、等差数列求和等任务,学习单重、嵌套循环及yield关键字用法,解决百钱买百鸡经典问题;通过while、do-while循环实现累加和、水仙花数打印,对比递推与递归风格。原创 2026-03-27 10:56:56 · 299 阅读 · 0 评论 -
1.4 掌握Scala运算符
本次实战深入讲解了Scala运算符的核心机制——“运算符即方法”。无论是基础的算术运算(+, -, *),还是逻辑、关系运算,其本质都是对象的方法调用,如 x + y 等价于 x.+(y)。这使得Scala能灵活地将单参或多参方法当作中缀运算符使用(如 word indexOf 'a'),并支持前缀(-x)和需特殊导入的后缀(x toUpperCase)运算符。与Java不同,Scala的==操作符默认比较对象内容,更加安全直观。原创 2026-03-26 16:25:46 · 119 阅读 · 0 评论 -
1.3 使用Scala集成开发环境
本次实战详细介绍了在IntelliJ IDEA中搭建Scala开发环境的完整流程。首先,明确了JDK 11与IDEA 2025.3.2的版本要求,并指导安装Scala插件。随后,通过创建D:\ScalaProjects工作目录,演示了新建Scala项目的全过程,包括配置JDK和Scala SDK、生成项目骨架。实战中还涵盖了在net.huawei.t01包下创建Welcome类和TestWelcome对象进行方法调用与测试。原创 2026-03-26 15:30:41 · 106 阅读 · 0 评论 -
1.2 Scala变量与数据类型
本次实战深入掌握Scala变量与数据类型核心机制。首先,对比val(不可变常量)与var(可变变量)的声明语法、类型推断及赋值规则,强调函数式编程中优先使用val的理念,并演示多行字符串处理。其次,解析Scala统一的类型层次结构(Any、AnyVal、AnyRef、Nothing),通过列表操作案例(创建、访问、遍历、反序)对比Java差异,凸显Scala“万物皆对象”特性。最后,详解数值与字符串间的灵活转换(插值、toXXX方法)及数值间自然/强制转换规则……原创 2026-03-16 18:17:09 · 152 阅读 · 0 评论 -
1.1.4 Scala的使用方式
本次Scala学习实践涵盖了交互式与文件式两种使用方式。在REPL环境中,通过基础算术、字符串重复(如"$"*10)、集合求和(reduce与sum)及循环结构,深入理解了Scala简洁而强大的表达能力;利用map与foreach等高阶函数实现星号三角形输出,体现了函数式编程的优雅。在文件模式下,分别以解释执行(scala script.scala)和编译执行(scalac + scala)运行程序,熟悉了类Java的编译流程与Python式的脚本特性。原创 2026-03-12 20:30:18 · 261 阅读 · 0 评论 -
1.1.3 Linux上安装Scala
本次在Linux系统上成功安装并配置了Scala 2.13.13。通过上传安装包至/opt目录,解压到/usr/local,并配置全局环境变量,使scala命令在终端中可直接调用。安装后验证了Java和Scala版本,并进入REPL环境进行多轮语法实战:包括变量赋值、表达式返回值、if-else与循环结构、等差数列求和、图形打印及九九乘法表的多种实现方式。特别体验了Scala函数式特性,如yield生成集合、reduce聚合操作等,充分体现了其简洁与表达力强的特点。原创 2026-03-11 09:55:19 · 110 阅读 · 0 评论
分享