Scala基础、Scala定义方法和函数、Scala块表达式、Scala循环 03

本文介绍了Scala编程语言的基础知识,包括变量声明、数据类型、条件表达式、块表达式、循环结构及方法与函数的调用。Scala结合了面向对象和函数式编程的特点,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • Scala代码想要运行,要么有入口main函数,要么基础App。否则无法编译运行。
object test Test {
	def main(args: Array[String]) {
	......
	}
}
object test extends App {
......
}

1. 声明变量

  • 使用val定义的变量值是不可变的,相当于java里用final修饰的变量
  • 使用var定义的变量是可变的,在Scala中鼓励使用val
object VariableDemo{
	def main(args:Array[String]){
		//使用val定义的变量是不可变的,相当于java用final修饰的变量
		val i = 1
		//使用var定义的变量是可变的,在Scala中鼓励使用val
		var s = "hello"
		//Scala编译器会自动推断变量的类型,必要的时候可以指定类型
		//变量名在前,类型再后
		val str: String = "world"
	}
}

2. Scala中的常用类型

Scala和Java一样,有7种数值类型,Byte、Char、Short、Int、Long、Float、Double类型和一个Boolean类型。

3. 条件表达式

Scala的条件表达式比较简洁,定义变量时加上if else判断条件。例如:

object ConditionDemo{
	def main(args: Array[String]) {
		val x = 1
		//判断x的值,将结果赋给y
		val y = if(x > 0) 1 else -1
		//打印y的值
		println(y)
	
		//支持混合类型表达式
		val z = if (x > 1) else "error"
		//打印z的值
		println(z)
		
		//如果缺失else,相当于if(x > 2) 1 else ()
		val m = if(x > 2) 1
		println(m)

		//在scala中每个表达式都有值,Scala中有个Unit类,用作不返回任何结果的方法的结果类型,相当于java中的void,Unit只有一个实例,写出()
		val n = if(x > 2) 1 else ()
		println(n)

		//if和else if
		val k = if(x < 0) 0
		else if(x >= 1) 1 else -1
		println(k)
	}
}

4. 块表达式

定义变量时用**{}**包含一系列表达式,其中块的最后一个表达式的值就是块的值

object BlockExpressionDemo{
	def main(args:Array[String]){
		val a = 10
		val b = 20

		//在scala中{}中包含一系列表达式,块中最后一个表达式就是块的值
		//下面就是一个块表达式
		val result = {
			val c = b - a
			val d = b - c
			d //这是最后一个表达式,也就是块表达式的值
		}
		println(result)
	}
}

5. Scala 循环

在scala中有for循环和while循环,用for循环比较多
for循环语法结构:for(i <- 表达式/数组/集合)

object ForDemo{
	def main(args: Array[String]){
		//for(i <- 表达式),表达式1 to 10返回一个Range(区间)
		//每次循环将区间中的一个值赋给i
		for(i <- 1 to 10)
			println(i)
		
		//for(i <- 数组)
		val arr = Array("a","b","c")
		for(i <- arr)
			println(i)
	
		//高级for循环
		//每个生成器都可以带一个条件,注意:if前面没有分号
		for(i <- 1 to 3; j <- 1 to 3 if i != j)
			println((10 * i + j) + " ")
		println()
		
		//for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合
		//每次迭代生成集合中的一个值
		val v = for(i <- 1 to 10) yield i * 10
		println(v)

	}
}

6. 调用方法和函数

6.1 方法

def add(x:Int, y:Int) = {
	x + y
}
  • 方法不能作为参数传递
  • 方法可以没有形参
  • 可以通过 _(下划线)转为函数
    val f1 = add _

6.2 函数

val fun = (x:Int, y:Int) => {
	x + y
}
  • 函数可以作为参数传递,最多只能传递22个
  • 函数必须有形参
  • 函数继承了trait,具有toString(),apply(),curried等方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值