scala-第七章-Scala函数高级操作

目录

字符串高级操作
匿名函数
curry函数
高阶函数
偏函数

字符串高级操作

多行
Interpolation


package com.imooc.scala.course07

object StringApp extends App {
  val s = "Hello : PK"
  val name = "PK"
  println(s + name)

  println(s"Hello:$name")
  val team = "AC Milan"
  println(s"Hello:$name,Welcome to $team")

  var b =
    """
      |这是一个多行字符串
      |hello
      |world
      |PK
      |""".stripMargin
  println(b)

}

匿名函数

scala> val m1 =(x:Int)=>x+1
val m1: Int => Int = $Lambda$1001/1727379710@233f52f8

scala> m1(10)
val res0: Int = 11

scala> def add = (x:Int,y:Int)=>{x+y}
def add: (Int, Int) => Int

scala> add(2,3)
val res1: Int = 5

curry函数

package com.imooc.scala.course07

object FunctionApp extends App {

  def sum(a: Int, b: Int) = a + b

  println(sum(2, 3))

  // 将原来接收两个参数的一个函数,转换成2个
  def sum2(a: Int)(b: Int) = a + b

  println(sum2(2)(3))


}

高阶函数

map、filter、flatmap、foreach、reduce等


package com.imooc.scala.course07

object FunctionApp extends App {
  println("----map------")
  val l = List(1, 2, 3, 4, 5, 6, 7, 8)
  // map:逐个去操作集合中的每个元素
  l.map((x: Int) => x + 1) //List(2, 3, 4, 5, 6, 7, 8, 9)
  // 简写 省略类型
  l.map((x) => x * 2) //List(2, 4, 6, 8, 10, 12, 14, 16)
  // 简写 省略括号(前提:只有一个元素才能省略括号)
  l.map(x => x * 2) //List(2, 4, 6, 8, 10, 12, 14, 16)
  // 简写 _表示每一个元素
  l.map(_ * 2) //List(2, 4, 6, 8, 10, 12, 14, 16)
  //  l.map(_ * 2).foreach(println)// 控制台打印

  // 在map(_*2)的基础上在过滤每一个元素>8
//  l.map(_ * 2).filter(_ > 8).foreach(println) // 10 12 14 16

  // 去List前x个元素
//  println(l.take(4)) //List(1, 2, 3, 4)
//  println(l.take(2)) //List(1, 2)

  // 1+2 3+3 6+4 10+5
  l.reduce(_ + _) //36
  l.reduceLeft(_ - _) //-34
  l.reduceRight(_ - _) //-4
  l.fold(0)(_-_)

  val f=List(List(1,2),List(3,4),List(5,6))
  f.flatten//List(1, 2, 3, 4, 5, 6) 压扁
  f.map(_.map(_*2))//List(List(2, 4), List(6, 8), List(10, 12))
  f.flatMap(_.map(_*2))//List(2, 4, 6, 8, 10, 12)

  val txt=scala.io.Source.fromFile("D:\\scala_test\\src\\com\\imooc\\scala\\course07\\hello.txt").mkString
  println(txt)
  val texs=List(txt)
  // 如何使用Scala来完成wordcount统计
//  texs.flatMap(_.split(",")).map(x=>(x,1)).foreach(println)



}

偏函数

package com.imooc.scala.course07

import scala.util.Random

object PartitalFunctionApp extends App {
  val names = Array("Akiho Yoshizawa", "YuiHatano", "Aoi Sola")
  val name = names(Random.nextInt(names.length))

  name match {
    case "Akiho Yoshizawa" => println("吉老师")
    case "YuiHatano" => println("波老师")
    case _ => println("知不知道你们在说什么")
  }

  // 偏函数:被包在花括号{} 内没有match的一组case语句
  // A输入参数类型 B输出参数类型
  def sayChinese: PartialFunction[String, String] = {
    case "Akiho Yoshizawa" => "吉老师"
    case "YuiHatano" => "波老师"
    case _ => "知不知道你们在说什么"
  }

  println(sayChinese("Akiho Yoshizawa"))
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值