W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
模式匹配允許我們在多個條件之間進行編程選擇。
object Main extends App { def printNum(int: Int) { int match { case 0 => println("Zero") case 1 => println("One") case _ => println("more than one") } } printNum(0) printNum(1) printNum(2) }
帶下劃線_
的最后一種情況是通配符。它匹配任何未定義在上面的情況下。
以下代碼說明計算Fibonacci數(shù)字的示例。
def fibonacci(in: Int): Int = in match { case 0 => 0 case 1 => 1 case n => fibonacci(n - 1) + fibonacci(n - 2) }
Scala允許將守衛(wèi)放置在模式中,以測試無法在模式聲明本身中測試的特定條件。
因此,如果傳遞負數(shù),我們可以寫入我們的Fibonacci 計算器返回0,如以下示例所示。
def fib2(in: Int): Int = in match { case n if n <= 0 => 0 case 1 => 1 case n => fib2(n - 1) + fib2(n - 2) }
讓我們考慮一個任何類型的元素的列表,包含一個String,一個Double,一個Int和一個Char。
object Main extends App { val anyList= List(1, "A", 2, 2.5, 'a') for (m <- anyList) { m match { case i: Int => println("Integer: " + i) case s: String => println("String: " + s) case f: Double => println("Double: " + f) case other => println("other: " + other) } } }
下面的方法測試一個傳入的Object,看看它是一個String,一個Integer,或者別的東西。
def test2(in: Any) = in match { case s: String => "String, length "+s.length case i: Int if i > 0 => "Natural Int" case i: Int => "Another Int" case a: AnyRef => a.getClass.getName case _ => "null" }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: