Scala的变量声明

news2024/11/29 12:32:14

文章目录

  • 变量声明
    • (一)简单说明
    • (二)利用val声明变量
      • 1,声明方式
      • 2,案例演示
    • (三)利用var声明变量
      • 1,声明方式
      • 2,案例演示
    • (四)换行输入语句(续行)
    • (五)同时声明多个变量
    • (六)总结变量的声明
      • 1,变量必须初始化
      • 2,定义变量可以不指定数据类型
      • 3,鼓励优先使用val(常量)
      • 4,语句不需要写结束符


变量声明

在这里插入图片描述

(一)简单说明

  • Scala中变量的声明使用关键字val和var。val类似Java中的final变量,也就是常量,一旦初始化将不可修改;var类似Java中的非final变量,可以被多次赋值,多次修改。
  • val - value - 值
  • var - variable - 变量

(二)利用val声明变量

1,声明方式

  • val <变量名>[: 数据类型] = 变量值
  • 定义变量比较灵活,可以指定数据类型,也可以不指定数据类型,由Scala根据赋的值自行判断数据类型
  • 在声明变量上,Scala兼具Java和Python的特点。Java是静态语言,声明变量必须指定数据类型,Python是动态语言,声明变量不需要指定数据类型。

2,案例演示

  • 声明一个val字符串变量name,其实定义的是一个常量
    在这里插入图片描述

  • 上述代码中的第二行为执行第一行的输出信息,从输出信息中可以看出,该变量类型由Scala自动推断为String。

  • 当然也可以在声明变量时指定数据类型,与Java不同的是,数据类型需要放到变量名的后面,这使得面对复杂的数据类型时更易阅读。
    在这里插入图片描述

  • 由于val声明的变量是不可修改的,若对声明的变量name进行修改,则会报错
    在这里插入图片描述

  • 因此,如果希望变量可以被修改(can be mutated),就需要使用var声明。

(三)利用var声明变量

1,声明方式

  • var <变量名>[: 数据类型] = 变量值

2,案例演示

  • 声明一个var字符串变量message,然后利用print函数输出其值
    在这里插入图片描述
  • 对var变量message重新赋值,再输出其值
    在这里插入图片描述

(四)换行输入语句(续行)

  • 如果需要换行输入语句,那么只需要在换行的地方按回车键,解析器会自动在下一行以竖线进行分割
    在这里插入图片描述
  • 如果要输入多行字符串,得使用三引号
    在这里插入图片描述
  • 去掉多行字符串的前导空格
    在这里插入图片描述
  • 用双引号是无法实现多行字符串
    在这里插入图片描述

(五)同时声明多个变量

  • Scala还可以将多个变量放在一起进行声明,将一个数值同时赋给多个变量
    在这里插入图片描述
  • Scala不能一次对多个变量赋不同的值
    在这里插入图片描述

(六)总结变量的声明

1,变量必须初始化

  • 定义变量需要初始化,否则会报错。
  • 注意:Java里可以先声明变量,然后再赋值

2,定义变量可以不指定数据类型

  • 定义变量时可以不指定数据类型,系统会根据初始化值自动推断变量的类型。
  • 注意:Java声明变量必须指定类型

3,鼓励优先使用val(常量)

  • Scala中鼓励优先使用val(常量),除非确实需要对其进行修改,才使用var(变量)。

4,语句不需要写结束符

  • Scala语句不需要写结束符,除非同一行代码使用多条语句时才需要使用分号隔开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

横道图时间标尺在P6软件中的设置

卷首语 由于其直观简洁且易于管理的特性&#xff0c;使其成为展示项目活动顺序及时间安排的最常用的进度管理工具。 甘特图 甘特图&#xff08;Gantt Chart&#xff09;&#xff0c;又称为横道图或棒条图&#xff0c;是最早的项目进度管理工具之一。由于其直观简洁且易于管理…

从WEB到PWA 开发-发布-安装

见意如题&#xff01;本文主要来说说PWA开发&#xff01;作为一个前端程序员&#xff0c;在没有任何Android/IOS的开发情况下&#xff0c;想想我们有多少种方法来开发一个原生移动应用程序&#xff01;我们可以有非原生、混合开发&#xff0c;PWA等等手段。类似uniapp&#xff…

LabVIEW应用程序(EXE)无法正确动态调用插件

LabVIEW应用程序&#xff08;EXE&#xff09;无法正确动态调用插件正在构建一个应用程序并使用插件架构&#xff0c;以便可以动态调用将来创建的VI&#xff08;插件&#xff09;。应用程序在LabVIEW开发环境中可以正常运行&#xff0c;但不能作为可执行程序运行。运行可执行文件…

STM32-CAN控制器介绍

STM32-CAN控制器介绍 对CAN接口部分重要知识点进行记录&#xff0c;更详细的需要查看参考手册 CAN协议介绍&#xff1a;https://blog.csdn.net/weixin_46251230/article/details/129147612 bxCAN简介 STM32的CAN接口叫做bxCAN&#xff0c;bxCAN是基本扩展CAN(Basic Extende…

第五次作业:修改redis的配置文件使得windows的图形界面客户端可以连接redis服务器

1. 安装 Redis 依赖 Redis 是基于 C语言编写的&#xff0c;因此首先需要安装 Redis 所需要的 gcc 依赖&#xff1a; yum install -y gcc tcl 2、上传安装文件 将下载好的 redis-6.2.7.tar.gz 安装包上传到虚拟机的任意目录&#xff08;一般推荐上传到 /usr/local/src目录&am…

3.基于分割的文本检测算法--DBNet++

文章目录1.概况2.DBNet中的主要方法2.1 网络结构2.2 适应特征图融合模块(Adaptive Scale Fusion Module, ASF)3.ASF模块的源码实现参考资料欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 1.概况 2022年02月份论文&#xff1a;Real-Time S…

对比yolov4和yolov3

目录 1. 网络结构的不同 1.1 Backbone 1.1.1 Darknet53 1.1.2 CSPDarknet53 1.2 Neck 1.2.1 FPN 1.2.2 PAN 1.2.3 SPP 1.3 Head 2. ​​​​​数据增强​​​​​ 2.1 CutMix 2.2 Mosaic 3. 激活函数 4. 损失函数 5. 正则化方法 知识点 记录备忘。 总体而言&…

云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM

前言&#xff1a; FusionCompute架构 (CNA、VRM) CNA(ComputingNode Agent):计算节点代理VNA虚拟节点代理&#xff0c;部署在CNA上&#xff0c;实施计算、存储、网络的虚拟化的配置管理。VRM(Virtual Resource Manager):虚拟资源管理器 VNA可以省略不安装 本次实验使用的是V…

关于客户背景调查的两个案例,说下我的真实看法

这篇文章我只是想客观陈述下事实&#xff0c;并没有对他人的贬低与对自己的吹捧之意。只是想通过这样两件小事&#xff0c;传递出来一个观点&#xff1a;在外贸业务开发过程中&#xff0c;很多时候正是那些我们内心抗拒&#xff0c;不愿意沉下心去做的事&#xff0c;才给了我们…

关于vue3生命周期的使用、了解以及用途(详细版)

生命周期目录前言组合式写法没有 beforeCreate / created 生命周期&#xff0c;并且组合式写生命周期用哪个先引哪个beforeCreatecreatedbeforeMount/onBeforeMountmounted/onMountedbeforeUpdate/onBeforeUpdateupdated/onUpdatedbeforeUnmount/onBeforeUnmountunmounted/onUn…

数据库及缓存之MySQL(一)

思维导图 常见知识点 1.mysql存储引擎&#xff1a; 2.innodb与myisam区别&#xff1a; 3.表设计字段选择&#xff1a; 4.mysql的varchar(M)最多存储数据&#xff1a; 5.事务基本特性&#xff1a; 6.事务并发引发问题&#xff1a; 7.mysql索引&#xff1a; 8.三星索引&#xf…

常见的分类算法及分类算法的评估方法

文章目录贝叶斯分类法&#xff08;Bayes&#xff09;决策树&#xff08;Decision Tree&#xff09;支持向量机&#xff08;SVM&#xff09;K近邻&#xff08;K-NN&#xff09;逻辑回归&#xff08;Logistics Regression&#xff09;线性回归和逻辑回归的区别神经网络&#xff0…

JavaWeb12-线程通讯(线程等待和唤醒)

目录 1.方法介绍 1.1.wait()/wait(long timeout)&#xff1a;让当前线程进入等待状态。 1.1.1.wait执行流程 1.1.2.wait结束等待的条件 1.1.3.wait() VS wait(long timeout) 1.1.4.为什么wait要放在Object中&#xff1f; --->PS&#xff1a;wait(0) 和 sleep(0) 的区…

算法训练营 day52 动态规划 买卖股票的最佳时机系列1

算法训练营 day52 动态规划 买卖股票的最佳时机系列1 买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票…

VR全景多种玩法打破传统宣传,打造全新云端视界

传统的展示方式只是在进行单方面的表达&#xff0c;不论是图片、视频&#xff0c;都无法让浏览者有参与感&#xff0c;这样的展示宣传效果自然比不上VR全景展示&#xff0c;VR全景基于真实场景来形成三维图像&#xff0c;其沉浸式和无视野盲区的特点让用户更有真实感和沉浸感&a…

python -- 魔术方法

魔术方法就算定义在类里面的一些特殊的方法 特点&#xff1a;这些func的名字前面都有两个下划线 __new__方法 相当于一个类的创建一个对象的过程 __init__方法 相当于为这个类创建好的对象分配地址初始化的过程 __del__方法 一个类声明这个方法后&#xff0c;创建的对象如果…

九龙证券|创业板向未盈利企业敞开大门 考验投行估值定价能力

未盈余企业上市有了新选择。2月17日&#xff0c;全面实行股票发行注册制相关准则规矩发布施行。深交所发布《深圳证券交易所创业板股票上市规矩&#xff08;2023年修订&#xff09;》及《关于未盈余企业在创业板上市相关事宜的告诉》&#xff0c;“预计市值不低于50亿元&#x…

设计模式C++实现23:中介者模式(Mediator)

部分内容参考大话设计模式第25章&#xff1b;本实验通过C语言实现。 一 原理 意图&#xff1a;用一个中介对象来封装一系列对象的交互&#xff0c;中介者使得各个对象不需要显示地相互引用&#xff0c;从而使耦合松散&#xff0c;而且可以独立地改变它们之间的交互。 上下文…

OCR项目实战(一):手写汉语拼音识别(Pytorch版)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a; 大数据专业硕士在读&#xff0c;CSDN人工智能领域博客专家&#xff0c;阿里云专家博主&#xff0c;专注大数据与人工智能知识分享。 &#x1f389;专栏推荐&#xff1a; 目前在写一个CV方向专栏&#xff0c;后期会更新不限于…

git merge和git rebase命令

参考链接&#xff1a;https://www.cnblogs.com/michael-xiang/p/13179837.html 学习背景&#xff1a;已经学习过git&#xff0c;但是实践较少&#xff0c;未和他人协作 1.merge git merge表示把当前分支合并到版本库中下拉的远程分支上。 git merge A B表示把A分支合并到B上…