当前位置: 首页 > news >正文

scala基础学习_变量

文章目录

  • scala中的变量
    • 常量 val(不可变变量)
    • 变量 var
    • 变量声明
      • 多变量声明
      • 匿名变量 _ 声明
    • 变量类型声明
    • 变量命名规范

scala中的变量

常量 val(不可变变量)

使用val关键字声明变量是不可变的,一旦赋值后不能被修改

对于 val 类型的变量,一旦它被初始化,它所指向的内存地址就不会改变(尽管该地址中的值可能会改变,如果它引用的是一个可变对象)。

val name = "Alice"
val name = "Bob"  // 这行代码会导致编译错误,因为 name 是不可变的

变量 var

使用 var 关键字声明的变量是可变的,可以在其生命周期内被重新赋值。然它的值可以被重新赋值,但它的类型仍然是固定的

对于 var 类型的变量,其引用的内存地址可以改变,这意味着你可以将 var 变量重新赋值为不同的值,这些值可能会存储在不同的内存地址中。

var age = 25
age = 26  // 这行代码是合法的,因为 age 是可变的

变量声明

在 Scala 中,使用 var 关键字声明的变量确实是可变的,这意味着你可以在变量的生命周期内多次改变它的值。然而,这并不意味着你可以多次声明同一个变量。一旦一个变量被声明,就不能在同一作用域内再次声明它,无论它是 var 还是 val

多变量声明

你可以在一行代码中声明多个变量,使用逗号分隔:

val a, b, c = 1  // a, b, c 都被赋值为 1

使用元组进行声明(解包)

var (x, y, z) = (10, 20, "world")

匹配声明

val tuple = (1, 2.0, "three")
tuple match {case (x: Int, y: Double, z: String) => println(s"x=$x, y=$y, z=$z")
}

匿名变量 _ 声明

在匿名函数和模式匹配中,你可以使用 _ 作为匿名变量或占位符。

val numbers = List(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter(_ % 2 == 0)  // _ 代表当前元素

变量类型声明

在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。

所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。

  • 显式类型声明:明确指定变量的类型。
  • 类型推断:省略类型声明,由编译器推断类型。

在 Scala 中,如果你不显式地指定变量的类型,编译器会尝试根据变量的初始值推断其类型。这种类型推断机制确实可以让你编写更简洁的代码。然而,一旦变量的类型被推断出来,它就不能再改变以接受不同类型的值

显式类型声明

object ListData {def main(args:Array[String]):Unit={val lst: List[Any] = List(1,2,3,5)val str1: String = "helllo"}
}

类型推断

object ListData {def main(args:Array[String]):Unit={val lst = List(1,2,3,5)val str1= "helllo"}
}

变量命名规范

  • 变量名必须以字母(A-Z 或 a-z)或下划线(_)开头。
  • 尽量不要使用以下划线开头的变量名,这通常用于标识内部或私有变量。
  • 变量名不能是Scala的关键字。
  • 驼峰命名:myVariableName, userAge, accountBalance

相关文章:

scala基础学习_变量

文章目录 scala中的变量常量 val(不可变变量)变量 var变量声明多变量声明匿名变量 _ 声明 变量类型声明变量命名规范 scala中的变量 常量 val(不可变变量) 使用val关键字声明变量是不可变的,一旦赋值后不能被修改 对…...

Java 身份证校验工具类(15位校验、18位校验与15转18)

文章目录 身份证简介(一)身份证号码的组成(二)一代和二代身份证一代身份证二代身份证 检验思路分析(一)15位身份证号码(二)18位身份证号码(三)校验算法示例&a…...

HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用

拿走请吱一声&#xff0c;点个关注吧&#xff0c;代码如下&#xff0c;网页有移动端适配 HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(8)

1.问题描述&#xff1a; 在AGC中&#xff0c;推送服务的消息回执新建成功后&#xff0c;有一个有效期 1&#xff0c;这个有效期是什么意思&#xff0c;过期后&#xff0c;会影响什么呢&#xff1f; 2&#xff0c;这个有效期是否可以修改成一直不过期&#xff1f; 解决方案&…...

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层&#xff0c;它用于标识一台网络设备&#xff0c;其中IP地址分为两个部分&#xff0c;网络地址和主机地址&#xff0c;通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言&#xff0c;它细分为五类&#xff0c;A,B,C,D,E,…...

音频客观测评方法PESQ

一、简介 语音质量感知评估&#xff08;Perceptual Evaluation of Speech Quality&#xff09;是一系列的标准&#xff0c;包括一种用于自动评估电话系统用户所体验到的语音质量的测试方法。该标准于2001年被确定为ITU-T P.862建议书[1]。PESQ被电话制造商、网络设备供应商和电…...

前后端分离的项目使用nginx 解决 Invalid CORS request

我是这样打算的&#xff0c;前端用nginx代理&#xff0c;使用80 转443 端口走https 前端的地址就是http://yumbo.top 或https://yumbo.top 后端服务地址是&#xff1a;http://yumbo.top:8081 下面是我的完整配置&#xff0c;功能是正常的&#xff0c;加了注释 user nginx; …...

回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测

回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测 目录 回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测基本介绍程序设计基本介绍 SVM-Adaboost集成学习是一种将支持向量机(SVM)与AdaBoost算法相结合的集成学习…...

常见排序算法总结 (五) - 堆排序与堆操作

堆排序&#xff08;借助 API&#xff09; 算法思想 利用堆能够维护数组中最大值的性质&#xff0c;根据数组元素建立最大堆&#xff0c;依次弹出元素并维护堆结构&#xff0c;直到堆为空。 稳定性分析 堆排序是不稳定的&#xff0c;因为堆本质上是完全二叉树&#xff0c;排…...

kubernetes的三种探针ReadinessProbe、LivenessProbe和StartupProbe,以及使用示例

前言 k8s中的Pod由容器组成&#xff0c;容器运行的时候可能因为意外情况挂掉。为了保证服务的稳定性&#xff0c;在容器出现问题后能进行重启&#xff0c;k8s提供了3种探针 k8s的三种探针 为了探测容器状态&#xff0c;k8s提供了两个探针: LivenessProbe和ReadinessProbe L…...

掌握线性回归:从简单模型到多项式模型的综合指南

目录 一、说明 二、简单线性回归 三、线性回归的评估指标 3.1 线性回归中的假设 四、从头开始的简单线性回归代码 五、多元线性回归 六、多元线性回归代码 七、多项式线性回归 八、多项式线性回归代码 九、应用单变量多项式回归 十、改变多项式的次数 十一、多列多项式回归 一、…...

Java:183 基于SSM的高校食堂系统

项目介绍 基于SSM的食堂点餐系统 角色:管理员、用户、食堂 前台用户可以实现商品浏览&#xff0c;加入购物车&#xff0c;加入收藏&#xff0c;预定&#xff0c;选座&#xff0c;个人信息管理&#xff0c;收货信息管理&#xff0c;收藏管理&#xff0c;评论功能&#xff0c;…...

光谱相机

光谱相机是一种能够同时获取目标物体的空间图像信息和光谱信息的成像设备。 1、工作原理 光谱相机通过光学系统将目标物体的光聚焦到探测器上&#xff0c;在探测器前设置分光元件&#xff0c;如光栅、棱镜或滤光片等&#xff0c;将光按不同波长分解成多个光谱通道&#xff0c…...

AI绘图:开源Stable Diffusion 3 ComfyUI下载安装方法

AI绘图&#xff1a;开源Stable Diffusion 3 ComfyUI下载安装方法 安装好后软件运行效果&#xff1a; 第一步&#xff1a;安装ComfyUI的最新版本 1、请从下面的地址下载压缩包&#xff0c;并解压缩到硬盘 https://github.com/comfyanonymous/ComfyUI/releases/download/late…...

一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测

一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测 目录 一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现INFO-CNN-SVM向量加权算法优化卷积神经网络结…...

AES笔记整理

文章目录 1. 简介2. 密钥加法层2. 字节代换层3. 行位移 - ShiftRows4. 列混淆 - MixColumn5. 其他5.1列混淆矩阵乘法运算5.2 AES密钥生成 6. 参考资料 以下内容为信息安全开发过程中&#xff0c;AES对称加密算法的笔记&#xff0c;大部分内容转载其他文章&#xff0c;若描述不清…...

Jmeter 性能压测-Tomcat连接数

1、影响性能的线程状态 ①BLOCKED&#xff0c;如果线程中有BLOCKED&#xff0c;就代表有阻塞情况&#xff0c;需要进行排查 ②TIMED_WAITING&#xff0c;如果线程中有TIMED_WAITING&#xff0c;就代表有等待的情况&#xff0c;要分情况来排查 系统线程在等待&#xff08;如果…...

基于Vue3的组件封装技巧分享

1、需求说明 需求背景&#xff1a;日常开发中&#xff0c;我们经常会使用一些UI组件库诸如and design vue、element plus等辅助开发&#xff0c;提升效率。有时我们需要进行个性化封装&#xff0c;以满足在项目中大量使用的需求。 错误示范&#xff1a;基于a-modal封装一个自定…...

python中r代表什么意思

r在python中表示什么意思&#xff1f; “r”是“raw”的简写。去查单词&#xff0c;意思是“未加工的&#xff0c;原料”。因此&#xff0c;不难想象&#xff0c;在python字符串前面&#xff0c;表示“按原样输出字符串”&#xff0c;也就是说字符串里的元素&#xff0c;原来什…...

《量子计算对人工智能发展的深远影响》

在科技发展的浪潮中&#xff0c;量子计算与人工智能无疑是两颗璀璨的明星&#xff0c;二者的融合正引领着一场深刻的科技变革. 量子计算的独特之处在于其利用量子比特的叠加和纠缠特性&#xff0c;能够实现并行计算&#xff0c;从而在处理复杂问题时展现出超越传统计算的巨大潜…...

YOLOv11卷积模块深度剖析:从参数解析到实战应用

1. YOLOv11卷积模块设计精要 第一次接触YOLOv11的配置文件时&#xff0c;我和大多数开发者一样被那些看似简单却暗藏玄机的参数搞得一头雾水。特别是当我在backbone部分看到[-1, 1, Conv, [64, 3, 2]]这样的配置时&#xff0c;直觉告诉我输出通道数应该是64&#xff0c;但实际运…...

别再忍受龟速下载!保姆级教程:Ubuntu 18.04一键更换阿里云/清华源(附SSH无桌面操作)

Ubuntu 18.04国内软件源极速配置指南&#xff1a;告别蜗牛速度的终极方案 每次执行apt update时盯着缓慢爬升的进度条&#xff0c;是否让你产生砸键盘的冲动&#xff1f;作为国内Ubuntu用户&#xff0c;默认国际源的龟速下载堪称开发效率的头号杀手。本文将彻底解决这个痛点——…...

SMS-Activate接码避坑指南:为什么你总收不到验证码?网络、号码选择与退款机制详解

SMS-Activate接码实战优化&#xff1a;从网络配置到号码选择的深度避坑手册 每次点击"获取验证码"按钮后的漫长等待&#xff0c;就像一场数字时代的赌博——你永远不知道这次是顺利通关还是再次掉进验证码黑洞。作为全球开发者、跨境电商从业者和隐私需求者的"数…...

Maya Arnold前台渲染无响应问题排查与解决

1. Maya Arnold前台渲染无响应问题排查指南 最近在Maya中使用Arnold渲染时&#xff0c;不少朋友都遇到了前台渲染无响应的问题。点击渲染按钮后&#xff0c;Render View窗口毫无反应&#xff0c;就像什么都没发生过一样。这种情况在动画场景整合阶段尤其常见&#xff0c;我自己…...

JavaScript中全局执行上下文与函数上下文的生成过程

全局执行上下文在JS引擎启动时创建&#xff0c;函数执行上下文在每次调用时创建&#xff1b;前者作用域链仅含全局环境&#xff0c;后者在创建阶段就基于定义位置固定作用域链&#xff1b;var和function声明被提升并初始化&#xff0c;let/const仅注册于词法环境而处于暂时性死…...

Qwen3-VL:30B在嵌入式系统的轻量化部署方案

Qwen3-VL:30B在嵌入式系统的轻量化部署方案 将30B参数的多模态大模型塞进嵌入式设备&#xff1f;这听起来像是天方夜谭&#xff0c;但通过巧妙的轻量化技术&#xff0c;我们确实能让Qwen3-VL在资源受限的环境中运行起来。 1. 为什么要在嵌入式系统部署大模型&#xff1f; 你可…...

如何轻松备份你的QQ空间回忆?GetQzonehistory三步搞定完整导出

如何轻松备份你的QQ空间回忆&#xff1f;GetQzonehistory三步搞定完整导出 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心那些记录青春时光的QQ空间说说会随着时间消失&am…...

IndexTTS2 V23情感控制实测:如何用滑块调节喜怒哀乐语音

IndexTTS2 V23情感控制实测&#xff1a;如何用滑块调节喜怒哀乐语音 1. 情感语音合成技术概述 1.1 什么是情感语音合成 情感语音合成&#xff08;Emotional Text-to-Speech&#xff09;是语音合成技术的重要分支&#xff0c;它突破了传统TTS系统"机械感"的局限&am…...

AI+经济学:当因果推断遇上强化学习,如何重塑政策与市场?

AI经济学&#xff1a;当因果推断遇上强化学习&#xff0c;如何重塑政策与市场&#xff1f;当经济学家还在为模型的假设争论不休时&#xff0c;AI已经学会了从数据洪流中直接“阅读”经济的脉搏。这不是替代&#xff0c;而是一场工具箱的全面升级。引言 在数字经济时代&#xff…...

【优化设计】基于人工蜂群算法机械设计优化附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f447; 关注我领取海量matlab电子书和数学建模资料&#x1f34a;个人信条&#xff1a;格物致知,完整Matl…...