scala的两种变量类型 var 和 val

简介: scala的两种变量类型 var 和 val

scala的两种变量类型 var 和 valscala的两种变量类型 var 和 val

在Java中,您可以这样声明新变量:

image.png


每个变量声明之前都有其类型。

相比之下,Scala具有两种类型的变量:

· val 创建一个不可变量(例如final在Java中)也就是常量

· var 创建一个可变变量

这是Scala中的变量声明:

image.png

这些示例表明,Scala编译器通常很聪明,可以从符号右侧的代码推断出变量的数据类型=。我们说变量的类型是由编译器推断的。如果愿意,还可以显式声明变量类型:

image.png

在大多数情况下,编译器不需要查看那些显式类型,但是如果您认为它们使代码更易于阅读,则可以添加它们。

image.png

valvar之间的区别

val和之间的区别var是,val使变量不变(就像finalJava中一样),var并使变量可变。由于val字段不能改变,因此有些人将其称为而不是变量。

REPL显示当您尝试重新分配val字段时会发生什么:

这了 reassignment  是再赋值的意思。

image.png

正如预期的那样,此操作失败并显示“ val的重新分配”错误。相反,您可以重新分配var

image.png

 

在Scala中,一般规则是,val除非有充分的理由不这样做,否则应始终使用字段。这个简单的规则

·   (a)使您的代码更像代数。

·  (b)帮助您开始进行功能编程,所有字段都是不可变的。

用var来实现hello world

这是带有val字段的“ Hello,world”应用程序的外观:

image.png

像之前一样:

· 将该代码保存在名为Hello3.scala的文件中

· 用它编译 scalac Hello3.scala

· 运行它 scala Hello3

关于valREPL中的字段的注释

REPL与在IDE中处理源代码并不完全相同,因此在REPL中您可以做一些事情,而在项目中实际代码时是做不到。

但是您可以val在REPL中重新定义字段,如下所示: image.png  

val 字段不能再IDE中重新定义,但是可以在REPL命令行中重新定义。

在Scala中创建新变量时,可以显式声明其类型,如下所示:

image.png

但是,通常可以将类型保留为关闭状态,Scala可以为您推断出该类型:

image.png

在大多数情况下,当您关闭类型时,代码更易于阅读,因此首选后者。

显式形式感觉很长

例如,在此示例中,数据类型显然是Person,因此无需在表达式的左侧声明该类型:

image.png

相比之下,将类型放在变量名称旁边时,代码会感到不必要的冗长:

image.png

总之:

image.png

需要明确定义类型时使用显式的形式

您想要显示数据类型的地方之一就是您想要清楚自己所创建的内容。

也就是说,如果您未明确声明数据类型,则编译器可能会对要创建的内容做出错误的假设。

基本数据类型

Scala带有您期望的标准数字数据类型。在Scala中,所有这些数据类型都是成熟的对象(不是原始数据类型)。

这些示例说明如何声明基本数据类型的变量:

image.png

在第四个例子,如果你没有明确指定类型,数量1将默认为Int,所以如果你想在其他数据类型中的一种- Byte,Long或者Short 你需要显式声明的类型

 

如图所示,带小数的数字(如2.0)将默认为 Double,因此,如果需要 Float,则需要声明 Float,如上例所示。

 

因为Int和Double是默认数字类型,所以通常在不显式声明数据类型的情况下创建它们:

 

image.png

REPL显示这些示例默认为IntDouble

image.png

这些数据类型及其范围是:

image.png

BigInt和BigDecimal

对于大数,Scala,还包括以下类型BigIntBigDecimal

image.png

BigIntBigDecimal为他们支持你们四则所有运算类型:

image.png

字符串和字符

Scala还具有StringChar数据类型,通常可以使用隐式形式进行声明:

image.png

再次,您可以使用显式形式,如果您愿意的话:

image.png

如图所示,将字符串括在双引号中,将字符括在单引号中。

目录
相关文章
|
2月前
|
Java 编译器 API
Scala学习--day01变量与数据类型、运算符
Scala学习--day01变量与数据类型、运算符
41 1
|
3月前
|
存储 Scala
Scala变量和数据类型
Scala变量和数据类型
27 1
|
4月前
|
Java Shell API
Scala入门【变量和数据类型】
Scala入门【变量和数据类型】
|
11月前
|
安全 Java 大数据
大数据开发基础的编程语言的Scala的类型系统
Scala是一种强类型的编程语言,它具有一套完善的类型系统。本文将介绍Scala的类型系统,帮助开发者了解这门语言的类型安全性和灵活性。
73 0
|
分布式计算 Java 编译器
Scala快速入门-1-声明变量
因为Spark是由Scala开发的,所以在开发Spark应用程序之前要对Scala语言学习。虽然Spark也支持Java、Python语言,但是作为一名Java程序猿,还是决定要学习Scala哈。 Scala是运行在JVM上一门语言。开发效率非常高、语法丰富简洁,三两行Scala代码能搞定Java要写的一大坨代码。 Scala的语法糖太甜~~
|
Java 编译器 Shell
scala中的变量、方法、函数
Scala是一门多范式的编程语言,一种类似java的编程语言,是可扩展语言,并集成面向对象编程和函数式编程的各种特性的混合功能编程语言。 Scala被编译后在Java虚拟机上运行。
173 0
scala中的变量、方法、函数
|
Scala
Scala Lazy 惰性加载变量 你知道吗?
Scala Lazy 惰性加载 原写法;
90 0
|
大数据 Java 编译器
Scala 字符类型|学习笔记
快速学习 Scala 字符类型。
146 0
|
Java 编译器 Scala
Scala 变量的注意事项|学习笔记
快速学习 Scala 变量的注意事项。
65 0
Scala 变量的注意事项|学习笔记
|
Java 编译器 Scala
Scala 变量的基本使用|学习笔记
快速学习 Scala 变量的基本使用。
73 0
Scala 变量的基本使用|学习笔记