欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Scala基础知识

Scala基础知识

2025/4/3 5:26:54 来源:https://blog.csdn.net/2402_87382229/article/details/146586192  浏览:    关键词:Scala基础知识

 

一、数据类型

  • 基本数据类型与引用类型:Java与Scholar在基本数据类型和引用类型上的区别。Scholar中所有类型都是类,包括基本数据类型的包装类。
  • 数据类型转换:Scholar负责基本数据类型和引用类型的转换,提供了多种增强功能和方法。
  • 特殊类型:介绍了nothing、any、anyone、VAL等特殊类型及其用途。

二、变量与常量定义

  • 强类型与弱类型语言:Java(强类型)和JavaScript(弱类型)在变量定义上的差异。
  • Scholar中的变量与常量:在Scholar中如何使用VAR定义变量,使用VAL定义常量。
  • 数据类型指定:在Scholar中定义变量时可以指定数据类型,而定义常量时则不需要。

 

三、操作符

  • 算术运算符:包括加减乘除和百分号等。
  • 关系运算符:如大于、小于、等于等。
  • 逻辑运算符:包括与、或、非等。

四、字符串插值

  • S插值:在字符串前加S可以使用变量。
  • F插值:除了S的功能外,还可以进行格式化输出。
  • RAW插值:与S类似,但不会对字面值进行编码。

 例如

scala> var name = "tom"
name: String = tom

 scala> var src = s"hello ${name}"

src: String = hello tom

 scala> val name1 = "tom"

name1: String = tom

scala> val name2 = "lxs"

name2: String = lxs

 println(s"hello,${name1 +","+ name2}!")

 

五、条件表达式

  • 单分支与多分支:分为if、if-else、if-else if-else。
  • 混合类型表达:在条件表达式中可以赋值不同类型的值,返回类型一般为any。
  • 无else的情况:如果没有else部分,返回类型为anywhere,表示空值。

示例如下:

 val x = 1

    //判断x的值,将结果赋给y

    val y = if (x > 0) 1 else -1

    //打印y的值

    println("y=" + y)

//支持混合类型表达式

    val z = if (x > 1) 1 else "error"

    //打印z的值

    println("z=" + z)

//如果缺失else,相当于if (x > 2) 1 else ()

    val m = if (x > 2) 1

    println("m=" + m)

//在scala中每个表达式都有值,scala中有个Unit类,写做(),相当于Java中的void

    val n = if (x > 2) 1 else ()

    println("n=" + n)

scala> val y = if(1>1) 1 else "error"

y: Any = error

当y的值类型既可能为Int又可能为String时,它的类型被定义为Any,是Int和String的父类。

没有else时,会默认为else (),

y的类型被定义为AnyVal

六、数据类型转换

转换方法:通过调用函数进行数据类型转换,如toInt()。

转换应用:如何将字符串转换为数字进行计算。

示例如下

七、块表达式

块表达式的使用:在声明变量或常量时,可以使用块表达式来表示涉及if-else等条件的情况。

八、循环语句

for循环:详细讲解了for循环的基本语法和应用,包括从1到10的循环示例,强调了Scholar语言中for循环的简洁性。

示例如下:

 

 

 scala>for (i <- 1 to 10) println(i)

打印1到10

scala> 1 to 10

res6: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala>for (i <- 1 until 10) println(i)

打印1到9

//包含开头不包含结尾

scala> 1 until 10

res0: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

遍历字符串:

相当于java中的fore

scala> val str = "hello"

str: String = hello

通过下标遍历字符串:

scala> for (i <- 0 until str.length) println(str.charAt(i))

h

e

l

l

o

遍历数组:

scala> val arr = Array(1,2,3,4,5,6)

arr: Array[Int] = Array(1, 2, 3, 4, 5, 6)

通过下标遍历数组:

scala> for(i <- 0 until arr.length) println(arr(i))

1

2

3

4

5

6

双重循环:

输出个位数与十位数不相同的两位数(个位、十位数均从1-3取值)

scala> for(i <- 1 to 3;j <- 1 to 3 if i != j) println(i*10+j)

12

13

21

23

31

32

数组操作:

对数组中的每个数乘以10,生成一个新数组:

scala> val arr = Array(1,2,3,4,5,6)

arr: Array[Int] = Array(1, 2, 3, 4, 5, 6)

更简单的方法:

scala> for (i <- arr) yield i*10

res4: Array[Int] = Array(10, 20, 30, 40, 50, 60)

for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala 中 for 循环是有返回值的。如果被循环的是 Map,返回的就是Map,被循环的是 List,返回的就是 List,以此类推。把数组中的偶数取出来乘以100得到一个新的数组

for(i<- arr if i%2 ==0)println(i*100)

更简单的方法:

scala> for (i <- arr if i%2==0) yield i*100

res11: Array[Int] = Array(200, 400, 600)

while循环:介绍了while循环的基本语义,并通过示例展示了其应用。

示例如下:

 while循环:基本语义与Java相同。

var n = 10

while(n > 0) { 

println(n)

n -= 1

}

do while循环:对比了do while循环与while循环的不同,强调了do while循环先执行循环体再检查条件的特点。

示例如下

 

循环区间及索引

 

 

 

 

to和until的区别:解释了to表示闭区间,until表示左闭右开区间,并通过示例展示了它们在循环中的应用。

索引的使用:强调了索引从0开始,遍历数组时需要注意索引的范围。

双重循环及数组操作

双重循环:通过示例展示了如何在Scholar语言中使用双重循环来输出个位数和十位数不相同的两位数。

数组操作:讲解了如何遍历数组并对数组中的每个元素进行操作,例如将数组中的每个元素乘以10。

九、循环的返回值

for循环的返回值:介绍了Scholar语言中for循环可以有返回值,并通过示例展示了如何利用返回值进行操作。

十、操作符重载

方法调用:Scholar语言中没有运算符,所有的操作都是通过方法调用来实现的,并通过示例展示了如何定义和调用加法方法。

示例如下

 在scala里面没有运算符,所有的符号其实都是方法。

scala> val a = 1.+(2)

a: Int = 3

相当于是,1这个实例调用+方法,传入了一个参数2

定义一个+方法:

scala> def +(x : Int,y : Int):Int = { x + y }

$plus: (x: Int, y: Int)Int

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词