package com.gsau.util.Chapter9
class FunctionTest {
/**
* 函数字面量(也就是匿名函数)
*/
val x = List.range(1, 100) //创建一个普通的list
val y = x.filter((i: Int) => i % 2 == 0) //传入了一个匿名函数创建一个只有偶数的新的list
val z = x.filter(_ % 3 == 0) //传入了一个匿名函数创建一个只有奇数的新的list,这是一个简化的写法
val double = (i: Int) => i * 2 //将函数字面量赋值给变量
//显式声明函数返回值类型为Boolean的不同形式(当函数为但个参数的时候)
val f: (Int) => Boolean = (i: Int) => {
i % 2 == 0
}
val f1: Int => Boolean = i => {
i % 2 == 0
}
val f2: Int => Boolean = i => i % 2 == 0
val f3: Int => Boolean = _ % 2 == 0
val f4 = (i: Int) => i % 2 == 0
//函数接受两个Int的参数,返回输入参数和的Int值
//1.隐式方式
val add = (x: Int, y: Int) => {
x + y
}
val add2 = (x: Int, y: Int) => x + y
//2.显式方式
val add3: (Int, Int) => Int = (x, y) => {
x + y
}
val add4: (Int, Int) => Int = (x, y) => {
x + y
}
val sum=(x:Int,y:Int,z:Int)=>{x+y+z}
val f5=sum(1,2,_:Int)
/**
* 创建返回函数的函数
* @param prefix
* @return
*/
def saySomeThing(prefix:String)=(s:String)=>{
prefix+" "+s //(s:String)=>{prefix+" "+s} 匿名函数
}
val sayHello=saySomeThing("Hello")
/**
* 定义一个接受函数作为参数的的方法
*/
def method(fun: (Int, Int) => Int, index: Int, index2: Int) = {
for (i <- 10 to index) {
for (j <- 10 to index2) {
var tmp = fun(i, j)
println(tmp)
}
}
val tmp = fun(11, 11)
tmp
}
}
package PackageTest {
object testClass {
def main(args: Array[String]): Unit = {
val list = List.range(1, 100)
val ts = new FunctionTest
ts.z.foreach((i: Int) => print(i + " "))
ts.x.foreach((i) => {
if (i == 1) {
println()
print(i + "->")
} else print(i + "->")
})
println("\n" + ts.double(1000))
list.foreach(i => println(ts.f(i)))
val fun: (Int, Int) => Int = (x, y) => {
if (x > 10) {
println(s"输入参数x=$x 大于等于10 可以进行计算")
if (x > 10) {
println(s"输入参数y=$y 大于等于10 可以进行计算")
x * y
} else {
println(s"输入参数y=$y 小于10 不可以进行计算")
0
}
} else {
println(s"输入参数x=$x 小于10 不可以进行计算")
0
}
}
println(ts.method(fun,15,15))
println(ts.f5(5))
println(ts.sayHello("Jhon"))
}
}
}
class FunctionTest {
/**
* 函数字面量(也就是匿名函数)
*/
val x = List.range(1, 100) //创建一个普通的list
val y = x.filter((i: Int) => i % 2 == 0) //传入了一个匿名函数创建一个只有偶数的新的list
val z = x.filter(_ % 3 == 0) //传入了一个匿名函数创建一个只有奇数的新的list,这是一个简化的写法
val double = (i: Int) => i * 2 //将函数字面量赋值给变量
//显式声明函数返回值类型为Boolean的不同形式(当函数为但个参数的时候)
val f: (Int) => Boolean = (i: Int) => {
i % 2 == 0
}
val f1: Int => Boolean = i => {
i % 2 == 0
}
val f2: Int => Boolean = i => i % 2 == 0
val f3: Int => Boolean = _ % 2 == 0
val f4 = (i: Int) => i % 2 == 0
//函数接受两个Int的参数,返回输入参数和的Int值
//1.隐式方式
val add = (x: Int, y: Int) => {
x + y
}
val add2 = (x: Int, y: Int) => x + y
//2.显式方式
val add3: (Int, Int) => Int = (x, y) => {
x + y
}
val add4: (Int, Int) => Int = (x, y) => {
x + y
}
val sum=(x:Int,y:Int,z:Int)=>{x+y+z}
val f5=sum(1,2,_:Int)
/**
* 创建返回函数的函数
* @param prefix
* @return
*/
def saySomeThing(prefix:String)=(s:String)=>{
prefix+" "+s //(s:String)=>{prefix+" "+s} 匿名函数
}
val sayHello=saySomeThing("Hello")
/**
* 定义一个接受函数作为参数的的方法
*/
def method(fun: (Int, Int) => Int, index: Int, index2: Int) = {
for (i <- 10 to index) {
for (j <- 10 to index2) {
var tmp = fun(i, j)
println(tmp)
}
}
val tmp = fun(11, 11)
tmp
}
}
package PackageTest {
object testClass {
def main(args: Array[String]): Unit = {
val list = List.range(1, 100)
val ts = new FunctionTest
ts.z.foreach((i: Int) => print(i + " "))
ts.x.foreach((i) => {
if (i == 1) {
println()
print(i + "->")
} else print(i + "->")
})
println("\n" + ts.double(1000))
list.foreach(i => println(ts.f(i)))
val fun: (Int, Int) => Int = (x, y) => {
if (x > 10) {
println(s"输入参数x=$x 大于等于10 可以进行计算")
if (x > 10) {
println(s"输入参数y=$y 大于等于10 可以进行计算")
x * y
} else {
println(s"输入参数y=$y 小于10 不可以进行计算")
0
}
} else {
println(s"输入参数x=$x 小于10 不可以进行计算")
0
}
}
println(ts.method(fun,15,15))
println(ts.f5(5))
println(ts.sayHello("Jhon"))
}
}
}