scala之函数

1、函数定义
def 方法名字(参数名:参数类型):返回值类型 = {
	// 方法逻辑
	// 方法体内的最后一行为返回值,不需要使用 return。这一点需要特别注意
	if (x > y) {
		// x 为返回值
		x
	} else {
		// y 为返回值
		y
	}
}

2、最后一行就是返回值
def add(x:Int, y:Int):Int = {
	// 下面一行就是返回值,不需要 return
	x + y
}
3、当返回值类型确定时,可以不用写返回值
// 当返回值确定时,可以不用写返回值
def three() = 1 + 2
println(three())
// 没有输入参数的时候,调用时括号可以省略
println(three)
4、没有返回值时的简写
// 没有返回值
// 在 IDEA 中打完 sayHello() 后输入 {,IDEA 会自动补全 : Unit =
def sayHello(): Unit = {
	println("Hello ...")
}
5、默认参数值
	loadConf()
	loadConf("Spark-production.conf")
	
  def loadConf(conf:String = "Spark-defaults.conf"): Unit = {
    println(conf)
  }
6、不按序传参
def speed(distance:Float, time:Float):Float = {
    distance / time
  }

// 通过采用键值对的形式传参数,之前的方式是参数默认对应方法参数定义的顺序
println(speed(distance = 100, time = 10))
println(speed(time = 10, distance = 100))
7、可变参数(在参数类型后面加星号,表示可以多个参数)
// 在参数类型后面加星号
def sum(numbers:Int*) = {
    var result = 0
    for (number <- numbers) {
      result += number
    }
    result
  }

println(sum(1, 2, 3))
println(sum(1, 2, 3, 4, 5))
8、条件表达式
 val a = if (x > 0) 1 else if (x == 0) 0 else -1
9、循环表达式 to
// 左:闭区间,右:闭区间
// 下面两行等价
1 to 10
1.to(10)

在这里插入图片描述

10、循环表达式 Range
// 左:闭区间,右:开区间

Range(1, 10)

// 步长
Range(1, 10, 2)
Range(1, 10, 4)
// 步长不能为 0

在这里插入图片描述

11、循环表达式 for
for (i <- 1 to 10) {
	println(i)
}

在这里插入图片描述

12、循环表达式 foreach
val courses = Array("Hadoop", "Spark SQL", "Scala")
// course 是 courses 里面的每个元素
// => 就是将左边的 course 作用上一个函数,变成另一个结果
// println 就是作用到 course 上的一个函数
courses.foreach(course => println(course))

13、循环表达式 while

var (num, sum) = (100, 0)
while (num > 0) {
	sum += num
	num -= 1
}
println(sum)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值