Scala内容

今天的内容如下 变量和数据类型1. 注释 - 单行注释(`//`)、多行注释(`/ /`)、2. 变量和常量 - 变量用`var`声明,可修改;常量用`val`声明,不可修改。 - 类型推导:声明时可省略类型,由编译器推断。3. 标识符命名规则 - 支持字母、数字、下划线,操作符开头需用反引号包裹。4. 字符串输出 - 支持拼接(`+`)、格式化(`printf`)、插值(`s"$name"`)。 - 多行字符串用`"""`包裹,`stripMargin`方法对齐。5. 数据类型 - 分为值类型(`AnyVal`)和引用类型(`AnyRef`)。 - 包括整型、浮点型、字符型、布尔型等,支持隐式转换。 - 特殊类型:`Unit`(类似`void`)、`Null`、`Nothing`。6. 类型转换 - 自动转换:低精度向高精度转换。 - 强制转换:使用`toInt`、`toDouble`等方法。 第3章 运算符1. 算术运算符 - 包括`+`、`-`、` `、`/`、`%`,支持字符串拼接。2. 关系运算符 - 包括`==`、`!=`、`>`、`<`等,结果为布尔值。3. 逻辑运算符 - `&&`(与)、`||`(或)、`!`(非)。4. 赋值运算符 - `=`、`+=`、`-=`等,无`++`和`--`。5. 位运算符 - `&`、`|`、`^`、`~`、`<<`、`>>`等。6. 运算符本质 - 所有运算符均为方法调用,如`a + b`等价于`a.+(b)`。 流程控制1. 分支控制 - `if-else`:支持单分支、双分支、多分支。 - 返回值:`if-else`表达式有返回值,类型为所有分支的公共父类。2. 循环控制 - `for`循环:支持范围(`to`、`until`)、守卫(`if`)、步长(`by`)、嵌套循环。 - `while`和`do-while`:与Java类似。 - 中断循环:使用`Breaks`工具类或异常处理。3. 模式匹配 - `match-case`:类似Java的`switch`,但更强大,支持类型匹配、守卫条件等。函数1. 函数基础 - 定义:`def 函数名(参数列表): 返回值类型 = { 函数体 }`。 - 函数与方法区别:方法是类中的函数,函数可独立存在。2. 高阶函数 - 函数可作为参数传递、返回值返回,或赋值给变量。 - 匿名函数:`(参数) => { 函数体 }`,支持简化写法(如`_`占位符)。3. 闭包与柯里化 - 闭包:函数捕获外部变量。 - 柯里化:将多参数函数转换为单参数函数链。4. 控制抽象 - 名调用(`=>`):延迟计算,传递代码块而非值。 面向对象1. 类与对象 - 类定义:`class 类名 { 属性和方法 }`。 - 对象:单例对象,通过`object`定义。2. 构造器 - 主构造器:类定义时直接声明参数。 - 辅助构造器:`def this(参数)`,需调用主构造器。3. 继承与多态 - 单继承,`extends`关键字,支持方法重写(`override`)。 - 动态绑定:方法与属性均为动态绑定。4. 特质(Trait) - 类似接口,可包含抽象和具体方法。 - 混入(`with`):一个类可混入多个特质。 集合1. 集合简介 - 分为序列(`Seq`)、集(`Set`)、映射(`Map`),有可变和不可变版本。2. 数组 - 不可变数组:`Array`,长度固定。 - 可变数组:`ArrayBuffer`,支持动态增减元素。3. 列表 - 不可变列表:`List`,支持头部操作和递归结构。 - 可变列表:`ListBuffer`。4. Set与Map - 无序、元素唯一,分可变和不可变版本。5. 集合操作 - 常用函数:`map`、`filter`、`reduce`、`fold`等。 - 并行集合:`par`方法实现多核并行计算。 模式匹配1. 基本语法 - `match-case`:匹配常量、类型、数组、列表、元组等。 - 模式守卫:通过`if`添加条件。2. 样例类 - 用于模式匹配,自动生成伴生对象和`apply`方法。

相关推荐
JavaPub-rodert18 分钟前
一道go面试题
开发语言·后端·golang
6<721 分钟前
【go】静态类型与动态类型
开发语言·后端·golang
带娃的IT创业者1 小时前
《Python实战进阶》No39:模型部署——TensorFlow Serving 与 ONNX
pytorch·python·tensorflow·持续部署
车载小杜1 小时前
基于指针的线程池
开发语言·c++
沐知全栈开发2 小时前
Servlet 点击计数器
开发语言
m0Java门徒2 小时前
Java 递归全解析:从原理到优化的实战指南
java·开发语言
桃子酱紫君2 小时前
华为配置篇-BGP实验
开发语言·华为·php
QTX187302 小时前
JavaScript 中的原型链与继承
开发语言·javascript·原型模式
shaoing3 小时前
MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
java·开发语言·数据库
The Future is mine3 小时前
Python计算经纬度两点之间距离
开发语言·python