1. 程式人生 > >Scala學習筆記(6)—— Scala 函式高階操作

Scala學習筆記(6)—— Scala 函式高階操作

1 Scala 函式高階操作

  • 字串的高階操作
  • 匿名函式
  • curry函式
  • 高階函式
  • 偏函式

2 字串高階操作

  • 多行
  • Interpolation
package com.scalatest.scala.advance

object StringApp extends App {

    val s = "Hello: "
    val name = "Mike"
    println(s + name)

    /*
    * 插值操作
    * */
    println(s"Hello: $name"
) val loc = "Beijing" println(s"Hello: $name,welcome to $loc") /* * 先輸入雙引號,然後按住 shift,繼續按雙引號 * */ val ss = """ |多行字串 |床前明月光 |疑是地上霜 """.stripMargin println(ss) }

在這裡插入圖片描述

3 匿名函式

匿名函式可以傳給一個函式,也可以傳給一個變數
在這裡插入圖片描述
在這裡插入圖片描述

4 curry 函式

package com.
scalatest.scala.advance /* * 匿名函式:函式可以命名,也可以不命名 * */ object FunctionApp extends App{ def sum(a: Int, b: Int) = a + b println(sum(1, 1)) def sum2(a: Int)(b: Int) = a + b println(sum2(2)(3)) }

5 高階函式

5.1 map

在這裡插入圖片描述

5.2 filter

在這裡插入圖片描述

5.3 take

在這裡插入圖片描述

5.4 reduce

在這裡插入圖片描述

5.5 flatmap

在這裡插入圖片描述

6 偏函式(用來模式匹配)

被包在花括號內沒有 match 的一組 case 語句

package com.scalatest.scala.function

import scala.util.Random

object PartitalFunctionApp extends App {

    val names = Array("Mike", "John", "Mary")
    val name = names(Random.nextInt(names.length))

    name match {
        case "Mike" => println("Hello Mike")
        case "Mary" => println("Hello Mary")
        case _ => println("welcome....")
    }

    // A 輸入型別,B 輸出型別
    def sayChinese: PartialFunction[String, String] = {
        case "Mike" => "Hello Mike"
        case "Mary" => "Hello Mary"
        case _ => "welcome....."
    }
    println(sayChinese("Mike"))

}

在這裡插入圖片描述