大数据培训新三板挂牌机构 股票代码:837906 | EN CN

scala函数的定义【笔记】

于2017-02-15由小牛君创建

分享到:


//匿名函数
(a: Int, b: Int) => a * b

//用变量来引用函数,变量就相当于函数名
val func1 = (a: Int, b: Int) => a * b

//特殊的函数,这个函数信息量大
val func2:(Int, Double) => (Double, Int) = {(a, b) => (b, a * 10)} 

//函数是可以作为参数传入到方法里面的

//定义一个数组
val arr = Array(1,2,3,4,5,6,7,8,9)
//在定义一个函数
val func3 = (a: Int) => a * 10
//将arr里面的每一个元素乘以10,生成一个新的数组
arr.map(i => func3(i))
arr.map(func3(_))
arr.map(func3)
arr.map((a: Int) => a * 10)
arr.map((a) => a * 10)
arr.map(a => a * 10)
arr.map(_ * 10)


def md(f: (Int, Int) => Int) : Unit = {
  val i = 2
  val j = 5
  val k = f(i, j)
  println(k)
}

val f0 = (a: Int, b: Int) => a + b
md(f0)

//方法和函数的转换(用神奇的下划线)
def m1(a: Int): Int = a * 10
val arr = Array(1, 2, 3, 4, 5, 6, 7)
//val f = m1 _
//arr.map(f)
arr.map(m1)
arr.map(i => m1(i))
arr.map(m1(_))
arr.map(m1 _)


//单词计数
val lines = Array("hello tom hello jerry", "hello tom hello", "hello tom jerry")
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t => (t._1, t._2.length)).toList.sortBy(_._2).reverse