scala基础学习_变量

server/2024/12/15 3:30:14/

文章目录

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

scala_1">scala中的变量

常量 val(不可变变量)

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

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

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

变量 var

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

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

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

变量声明

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

多变量声明

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

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

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

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

匹配声明

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

匿名变量 _ 声明

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

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

变量类型声明

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

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

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

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

显式类型声明

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

类型推断

scala">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

http://www.ppmy.cn/server/150247.html

相关文章

系统架构师软考应试八股文-论nosql技术

软考架构成功上岸了,分享一些练习过的应试八股文,都是速成的,批改合格的。水平有限,勿喷啊。哈哈 摘要: 2021年3月,我参加了某省人大履职系统的开发工作,该系统是一个处理代表履职工作、代表工作站、立法业…

Linux-Ubuntu相关指令以及操作

一,Linux基础指令 二,文件系统结构 常用的U盘就是挂载在这个mdeia文件夹下,比如实现优盘分几个区,就要将在dev下优盘的驱动解除挂载在media,然后对其进行分区,再挂载回去,最后将其类型重新改为fat32格式&am…

使用 ADB (Android Debug Bridge) 工具来截取 Android 设备的屏幕截图

可以使用 ADB (Android Debug Bridge) 工具来截取 Android 设备的屏幕截图。以下是具体的操作步骤: 1. 连接设备 确保 Android 设备通过 USB 或网络连接到电脑,并运行以下命令检查连接状态: adb devices2. 截取屏幕截图 运行以下命令将设…

C# 小案例(IT资产管理系统)

开发工具:visual studio 2022 语言:C# 数据库:Sql Server 2008 页面展示 一、登录 二、主窗体 三、用户管理 四、资产管理 五、关于 Java版地址:基于若依开发物品管理系统(springbootvue)_若依物品管理系统-CSDN博客 Python版…

基于大数据的世界500强数据的行业经营特征分析系统

项目截图 Java语言介绍 Java语言是目前最受欢迎的一种高级语言,它是一种类 C的语言,将 C和 C的优势结合在一起,但又舍弃了各自的劣势,在 Java语言中,所有的东西都是对象。这使得 Java语言的开发工作变得更为高效。Jav…

leetcode 31 Next Permutation

题意 找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质,从某个位置往后一定是降序。…

入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网…

Android 使用Overlay现实主题切换

最近项目上,想做一个主题切换的功能,整理了一下发布出来,主要使用的是IOverlayManager,大体思路如下: 1、想切换的应用,各自做overlay apk(简称皮肤包) 2、将overlay apk push 到v…