//函数
object Test0801 {
// def 定义函数
//max 函数名
//(x:Int,y:Int) 参数名,参数类型
//:Int={} 返回值类型
def max(x:Int,y:Int):Int={
if(x > y)
x
else
y
}
def main(args: Array[String]): Unit = {
val a = max(1,4)
println(a)
// 函数字面量 function literal =>左侧的表示输入,右侧表示转换操作
val b = (x:Int)=>x+1
println(b(10))
//上面的语句等同于
def c(x:Int)= x+1
println(c(11))
//多个语句使用
val d=(x:Int)=>{
println("赵丽颖")
println("杨幂")
x+1
}
println(d(12))
//调用函数
//1.数组的map 方法调用(第一种方法)
val e =Array(1,2,3,4).map(b).mkString(",")
println(e)
//2.匿名函数调用(第二种方法)
val f=Array(1,2,3,4).map((x:Int)=>x+1).mkString(",")
println(f)
//3.花括方式(第三种方法)
val g=Array(1,2,3,4).map{(x:Int)=>x+1}.mkString(",")
println(g)
//4.省略点(第四种方法)
val h =Array(1,2,3,4)map{(x:Int)=>x+1}mkString(",")
println(h)
//5.参数类型推断写法( 第五种方法)
val i =Array(1,2,3,4)map{x=>x+1}mkString(",")
println(i)
//6.函数只有一个参数的话,可以省略() (第六种方法)
val j=Array(1,2,3,4)map{x=>x+1}mkString(",")
println(j)
//7.如果参数右面只出现一次,可以省略(第七种方法)
val k=Array(1,2,3,4)map{_+1}mkString(",")
println(k)
//值函数
// 第一种方法
val a1=1 + (_:Int)
println(a1(10))
//第二种方法
val a2:(Int) => Int =1+_
println(a2(11))
//函数参数(高级函数)
//定义函数
def b1(x:(Int) => Int)=x(4)
//调用
println( b1((x:Int)=>x+1) )
println( b1(_+2) )
//函数闭包
//
var c1 = 1
var fun =(x:Int)=>x+c1
println(fun(1))
c1 = 10
println(fun(10))
//像这种运行时确定 c1 类型及值的函数称为闭包,c1 是个自由变量,在运行时其值和类型得以确定
//这是一个由开放(free)到封闭的过程,因此称为闭包
val more =List(1,2,3,4,-2,-1)
var sum = 0
more.foreach(sum += _)
println(sum)
more.foreach(sum += _)
println(sum)
}
}
入门 Scala 代码 六 (函数,闭包)
最新推荐文章于 2024-05-30 18:09:33 发布