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)
}
结果:
1.2 字符串拼接
字符串拼接有两种方式:
-
+
:以前,字符串的拼接我们往往使用+
来拼接 - 插值法:
语法
s"${字符串1}${字符串2}"// 大括号可以省略
例子:
object StringApp extends App {
val s="Hello:"
val name="PK"
println(s)
println(s+name)
// 插值
println(s"$s$name")
}
结果:
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柯里化风格的使用可以简化主函数的复杂度,提高主函数的自闭性,提高功能上的可扩张性、灵活性。可以编写出更加抽象,功能化和高效的函数式代码。