Scala入门9之函数高级操作【字符串高级操作、匿名函数、柯里化(Currying)函数、高阶函数】

Scala函数高级操作

1、字符串高级操作

1.1 定义字符串

\quad \quad scala提供多种定义字符串的方式,将来我们可以根据需要来选择最方便的定义方式。

  • 使用双引号
  • 使用三引号

使用双引号——适用于少量内容

语法

var/val 变量名="字符串”

使用三引号

\quad \quad 如果有大段的文本需要保存,就可以使用三引号来定义字符串。例如:保存一大段的SQL语句。三 个引号中间的所有字符串都将作为字符串的值。

语法

val/var 变量名 = """字符串1
 字符串2"""
  • 快捷技巧:shift+分号按三下就能出现三引号

例子:

object StringApp extends App {

  val b =
    """
      |这是一个多行字符串
      |hello
      |word
      |""".stripMargin

  println(b)

  
}

结果:

Scala入门9之函数高级操作【字符串高级操作、匿名函数、柯里化(Currying)函数、高阶函数】

1.2 字符串拼接

字符串拼接有两种方式:

  • + :以前,字符串的拼接我们往往使用+来拼接
  • 插值法:
    语法
s"${字符串1}${字符串2}"// 大括号可以省略

例子:

object StringApp extends App {
  val s="Hello:"
  val name="PK"

  println(s)
  println(s+name)
  // 插值
  println(s"$s$name")
}

结果:
Scala入门9之函数高级操作【字符串高级操作、匿名函数、柯里化(Currying)函数、高阶函数】

2、匿名函数

\quad \quad 在Scala中,你不需要给每一个函数命名,没有将函数赋给变量的函数叫做匿名函数。

语法

(参数名:参数类型)=>函数体

例子:

scala> (x:Int) => x+1
res7: Int => Int = <function1>

匿名函数的作用

  • 可以将匿名函数传给一个变量,变量就可以为一个函数使用
scala> val m1=(x:Int) => x+1
m1: Int => Int = <function1>
scala> m1(10)
res8: Int = 11
  • 可以将匿名函数传给方法(函数)作为方法的参数使用
scala> def add=(x:Int,y:Int) => {x+y}
add: (Int, Int) => Int

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

3、柯里化(Currying)函数

\quad \quad 柯里化(Currying)指的是把原来接受多个参数的函数变换成接受一个参数的函数过程,并且返回接受余下的参数且返回结果为一个新函数的技术。

语法

def 函数名(参数1:参数1类型)(参数2:参数2类型):返回值类型={
// 代码块
}
  • 返回值类型可以不写
    例子
object StringApp extends App {
  //非柯里化(Currying)函数
  def sum(a:Int,b:Int)=a+b
  println(sum(2,3))
  //柯里化(Currying)函数
  def sum2(a:Int)(b:Int)=a+b
  println(sum2(2)(3))

}
  • scala柯里化风格的使用可以简化主函数的复杂度,提高主函数的自闭性,提高功能上的可扩张性、灵活性。可以编写出更加抽象,功能化和高效的函数式代码。

4、高阶函数

上一篇:CSPS 2020游记


下一篇:P4852 yyf hates choukapai