Scala之变量

变量是保存存储值的内存位置的名称。这意味着当创建变量时,可以在内存中保留一些空间。

根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容。因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。

1、变量声明

使用关键字var声明,是一个可以改变值的变量,这称为可变变量。

var myVar : String = "Foo"

使用关键字val声明,是一个不能被改变的变量,这被称为不可变变量。

val myVal : String = "Foo"

2、数据类型

变量的类型在变量名称和等号之前指定。可以通过其数据类型来定义任何类型的Scala变量,如下所示:

val or val VariableName : DataType = [Initial Value]

如果您没有为变量分配任何初始值,则有效的语法如下:

var myVar :Int;
val myVal :String;

当为变量分配初始值时,Scala编译器可以根据分配给它的值来推断变量的类型。这被称为变量类型推断。

var myVar = 10;
val myVal = "Hello, Scala!";

默认情况下,myVar将会被计算推断为Int类型,myVal将计算推断为String类型变量。

3、多个赋值

Scala支持多个赋值。如果代码块或方法返回一个元组(Tuple - 保持不同类型的对象的集合),则可以将元组分配给一个val变量。

val (myVar1: Int, myVar2: String) = Pair(40, "Foo")

类型推断得到正确的类型 -

val (myVar1, myVar2) = Pair(40, "Foo")

4、变量的作用域

Scala中的变量可以有三个不同的范围,具体取决于它们被使用的位置。它们可以作为字段存在,作为方法参数和局部变量存在。以下是每种类型范围的详细信息。

字段

字段是属于对象的变量。这些字段可以从对象中的每个方法的内部访问。根据字段声明的访问修饰符,也可以在对象外部访问字段。 对象字段可以是可变的和不可变的类型,可以使用varval来定义。

方法参数

方法参数是在调用该方法时用于传递方法中的值的变量。方法参数只能从方法内部访问,但是如果从方法外部引用了对象,则可以从外部访问传入的对象。方法参数始终是不可变的,由val关键字定义。

局部变量

局部变量是在方法中声明的变量。局部变量只能从方法内部访问,但如果从方法返回,则您创建的对象可能会转义该方法。局部变量可以是可变的和不可变的类型,可以使用varval定义。

原文地址:https://www.cnblogs.com/dangjf/p/10331337.html

时间: 2024-10-09 22:38:25

Scala之变量的相关文章

Scala match 变量

昨天写 Scala 的时候,使用 match(相当于 switch)时,运行结果很奇怪. var i: Int = 0 while (i < items.length) {   i % width match {     case offset => println("offset: " + items(i))     case logSize => println("logSize: " + items(i))     case lag =>

Scala学习-变量常量、运算符、流程控制和函数

scala是马丁.奥德斯克设计的,专门为程序员设计,广泛应用于大数据的语言.它同时支持面向对象和面向函数编程,运行scala需基于JVM,使用它需要提前安装好JDK和scala SDK.scala的的代码一行可以顶多行java代码,开发效率高,并且兼容java类库,scala编译完也是.class文件.另外大数据框架kafka和spark是基于scala开发的,因此想做流处理需要学习scala. 基本数据类型 scala中没有基本类型的说法,绝大多数类型(类似java类型)都封装成了类,以下是它

scala环境变量配置

SCALA-HOME:       E:\Scala      scala 安装目录 Path:            追加   %scala_Home%\bin;%scala_Home%\jre\bin; ClassPath  : 追加   .;%scala_Home%\bin;%scala_Home%\lib\dt.jar;%scala_Home%\lib\tools.jar.;

Scala常用变量生命周期

val words = *** //在words被定义时取值 lazy val words = *** //在words被首次使用时取值 def words = *** //在每一次words被使用时取值 原文地址:https://www.cnblogs.com/itboys/p/9862132.html

scala快速学习笔记(一):变量函数,操作符,基本类型

为了用spark,先学下scala. 参考教程:http://meetfp.com/zh/scala-basic 在线编译:http://meetfp.com/tryout 其它资料:http://scalachina.com/node/16 http://blog.csdn.net/mapdigit/article/details/21878083 特点: Scala是一种纯面向对象的语言,一切都是对象:将原始类型和类统一起来,同时也将函数和操作符统一起来. Scala又是函数式语言,这体现在

Scala系统学习(四):Scala变量

变量是保存存储值的内存位置的名称.这意味着当创建变量时,可以在内存中保留一些空间. 根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容.因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符. 变量声明 Scala具有用于声明变量的不同语法.它们可以被定义为值,即常数或变量. 这里,myVar使用关键字var声明. 它是一个可以改变值的变量,这称为可变变量. 以下是使用var关键字定义变量的语法 - 语法 var myVar : String = "Foo&qu

Scala学习笔记及与Java不同之处总结-从Java开发者角度

Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方.以下列举了部分,但令人印象深刻的Scala语言的不同之处,具体的代码演示样例及具体阐述见下文. ? Scala中可直接调用Java代码,与Java无缝连接. 语句能够不用";"结束.且推荐不适用";". 变量声明时以var或va

scala习题精选100道

1.**[primary]**关于和Scala进行交互的基本方式REPL说法错误的是? C A.R 读取(read)B.E 求值(evaluate)C.P 解析(Parse)D.L 循环(Loop) 2.**[primary]**不属于Scala7种数值类型的是? D A.CharB.IntC.FloatD.LongLong 3.**[primary]**如果需要使用scala库中的sqrt函数,如sqrt(2),下列引用包的方式错误的是? B A.import scala.math._B.im

scala class和object,trait的区别

Scala类 1 2 3 4 5 6 7 8 9 10 11 12 13 class Counter {   private var value = 0 // 必须初始化字段   def increment() { value += 1 } // 方法默认公有   def current = value // 调用必须是myCounter.current这种风格 } class Student{    var age=20     //底层编译器会自动为私有的age添加get和set的公有方法,