1. 程式人生 > >scala 模式匹配之Type、Array、List和Tuple

scala 模式匹配之Type、Array、List和Tuple

1、程式碼

package com.yy.base

/**
 * Scala 模式匹配
 * Type Array List Tuple
 */
object PatternMatchMore extends App {
  
    println("-----Type模式匹配------")
    def typeMatch(t:Any) = t match{
      case c:Int => println(c+"是個整數")
      case c:String => println(c+"是個字串")
      case m:Map[_,_] => m.foreach(println)
      case _ => println("沒有匹配上")
    }
  //呼叫
    typeMatch(2)
    typeMatch("scala")
    typeMatch(Map("name"->"yy"))
    
    println("-----Array模式匹配------")
    def arrayMatch(arr:Any) = arr match{
      case Array(0) => println("Array是一個元素為0的陣列")
      case Array(x,y) => println("Array有兩個元素:" + x +","+y)
      case Array(0,_*) => println("Array至少有一個元素,且第一個元素為0")
      case _ => println("其他型別的陣列")
    }
    arrayMatch(Array(0))
    arrayMatch(Array(0,1))
    arrayMatch(Array(0,1,2,3,4,5))
    arrayMatch(Array(1,2,3,4,5))
    
    println("-----List模式匹配------")
    def listMatch(list:Any) = list match{
      case 0::Nil => println("List:0")
      case x::y::Nil => println("List:" + x + "," + y)
      case 0::tail => println("List:0......")
      case _ => println("其他型別的List")
    }
    listMatch(List(0))
    listMatch(List(1,2))
    listMatch(List(0,1,2,3,4,5))
    listMatch(List(1,2,3,4,5))
    
    println("-----Tuple模式匹配------")
    def tupleMatch(t:Any) = t match{
      case (0,_) => println("Tuple start with 0")
      case (x,0) => println("Tuple start with " + x)
      case _ => println("其他型別的Tuple")
    }
    tupleMatch((0,"yy"))
    tupleMatch(("xx",0))
    tupleMatch((0,1,2,3))
}
2、結果
-----Type模式匹配------
2是個整數
scala是個字串
(name,yy)
-----Array模式匹配------
Array是一個元素為0的陣列
Array有兩個元素:0,1
Array至少有一個元素,且第一個元素為0
其他型別的陣列
-----List模式匹配------
List:0
List:1,2
List:0......
其他型別的List
-----Tuple模式匹配------
Tuple start with 0
Tuple start with xx
其他型別的Tuple

相關推薦

scala 模式匹配TypeArrayListTuple

1、程式碼 package com.yy.base /** * Scala 模式匹配 * Type Array List Tuple */ object PatternMatchMore extends App { println("-----Type

Scala筆記(一):ArrayListTuple,Set,Map,Iterator

1. 陣列(Array) 陣列是程式設計中經常用到的資料結構,Scala中包括定長陣列(Array)和變長陣列(ArrayBuffer)。 定長陣列,就是長度不變的陣列,在Scala中使用Array進行宣告,如下: val intArr = new A

Scala入門到精通——第三節 ArrayList

本節主要內容 陣列操作實戰 列表List操作實戰 陣列操作實戰 1 定長陣列 //定義一個長度為10的數值陣列 scala> val numberArray=new Array[Int](10) numberArray: Array[I

scala模式匹配及樣本類

cas 增加 符號 size 成功 沒有 類類型 種類 返回 樣本類   1、帶有case關鍵字的類被稱為樣本類;     例如:abstract class Expr case class Var(name: String) extends E

Spark記錄-Scala模式匹配

pri 存在 cas man 定義 nbsp 不同類 方式 出現 Scala模式匹配 模式匹配是Scala函數值和閉包後第二大應用功能。Scala為模式匹配提供了極大的支持,處理消息。 模式匹配包括一系列備選項,每個替代項以關鍵字大小寫為單位。每個替代方案包括一個模式和一個

java集合(一):ListIteratorArrayArrayListLinkList

整體 http 是否 簡潔 畢業 一個 位置 數據 reac 畢業這麽久,java 標準庫中的集合都沒怎麽仔細了解過,準備好好學習學習。 集合(Collection):由一個或多個確定的元素所構成的整體叫做 集合--百度百科的解釋。換言之,就是裝元素的容器,元素可以是任何類

Scala模式匹配常用

今天在工作中遇到的幾個小問題,總結一下: 1.因為業務需要呼叫PHP的介面,獲取到的返回體需要做一段邏輯處理,然而某個欄位接收到的引數是io.serializable型別,欄位的型別不是預期的string型別,當時有點懵逼,因為是用Scala的match case做模式匹配,也沒多想,幸虧同事提示

伺服器叢集負載均衡(F5ArrayNginxLVSHAProxy)區別以及選型

PS:Nginx/LVS/HAProxy是目前使用最廣泛的三種負載均衡軟體,本人都在多個專案中實施過,參考了一些資料,結合自己的一些使用經驗,總結一下。 一般對負載均衡的使用是隨著網站規模的提升根據不同的階段來使用不同的技術。具體的應用需求還得具體分析,如果是中小型的Web應用,比如日P

Scala模式匹配 match case

1.匹配字串/型別/守衛 val arr = Array("YoshizawaAkiho", "YuiHatano", "AoiSola") val i = Random.nextInt(arr.length) println(i) val name = arr(i) println(n

scala模式匹配(全網最全的)

---模式匹配 【1】 入門程式 【2】對型別進行匹配 【3】對陣列進行匹配 【4】對集合進行匹配 【5】樣例類 (匹配自定義型別) 【6】Option的模式匹配 【7】偏函式   1 入門程式    

Java反射框架(三)(完結)——ConstructorArrayEnum

目錄 4.1陣列 4.2列舉 3.Members 3.3Constructors 構造器用來建立類的物件。 獲取Constructor 獲取特定構造器 Constructor con = c.getConstructor(int.class

Scala10——Scala模式匹配

Scala是沒有Java中的switch case語法的,相對應的,Scala提供了更加強大的match case語法,即模式匹配。 模式匹配包括一系列備選項,每個替代項以關鍵字大小寫為單位。每個替代方案包括一個模式和一個或多個表示式,如果模式匹配,將會進行評

scala模式匹配+案例教學

scala中模式匹配,類似於Java中的swich case語法,即對一個值進行條件判斷,然後針對不同的條件,進行不同的處理。 但是Scala的模式匹配的功能比Java的swich case的功能要強大地多,Java的swich case語法只能對值進行匹配。但是Scala的模式匹配除了可以對值

【圖文詳細 】Scala——模式匹配

5、Scala 的模式匹配  Scala 有一個十分強大的模式匹配機制,可以應用到很多場合:如 switch 語句、型別檢查等。 並且 Scala 還提供了樣例類,對模式匹配進行了優化,可以快速進行匹配    5.1、匹配字串 object Case

Scala學習筆記(5)—— Scala 模式匹配

1 模式匹配 package com.scalatest.scala.pattern import scala.util.Random object MatchApp extends App { val names = Array("Mike", "John", "Jen

演算法:模式匹配KMP演算法

前言:   昨天看到《演算法導論》裡的第32章:字串匹配,說到一個關於字串匹配的很好的演算法——KMP。關於KMP的記憶體含意以及KMP的來源,不是本文講述的範疇,請感興趣的讀者自行查閱相關資料。  

Scala模式匹配樣例類

Scala模式匹配和樣例類 Scala有一個十分強大的模式匹配機制,可以應用到很多場合,如switch語句、型別檢查等,並且scala還提供了樣例類,對模式匹配進行了優化,可以快速匹配  1.匹配字串 package pricate import scala.util.Rand

[Swift通天遁地]五高階擴充套件-(6)對基本型別:IntStringArrayDictionaryDate的擴充套件

本文將演示對基本型別:Int、String、Array、Dictionary、Date的擴充套件。 首先確保在專案中已經安裝了所需的第三方庫。 點選【Podfile】,檢視安裝配置檔案。 1 platform :ios, '12.0' 2 use_frameworks! 3 4 targe

Scala:模式匹配

模式匹配 Scala是沒有Java中的switch case語法的,相對應的,Scala提供了更加強大的match case語法,即模式匹配,類替代switch case,match case也被稱為模式匹配。 match case的語法如下:變數 match { case 值 =&

java中ListArrayMapSet等集合相互轉換的最佳方法

     在java中,我們經常需要對List、Array等做一些轉換操作,當然轉換方法有很多種,但哪種方法既方便又高效呢?在這裡向大家介紹一下集合間的最佳轉換方法。 1.List轉換為Array