Scala基礎應用(4) 樣本類和模式匹配

2021-07-29 05:01:28 字數 2404 閱讀 5873

就是在普通類前加了case

case class test(param1: int, param2: string ...)
省略掉new, 樣本類例項化不需要在前面加new, 直接產生物件。

引數自動加val, 即樣本類的引數預設是不可修改的

自動加上tostring, equals, hashcode三個方法

模式在變數定義中

val mytuple = (123, "abc")

val (anumber, astring) = mytuple

宣告兩個變數及其值:

anumber = 133

astring = "abc"

for表示式裡的模式

例1:

var capitals = map[string, string]("china"

->

"beijing", "france"

->

"paris")

for ((country, city) <- capitals)

println(s"the capital of $ is $")

例2:for (some(fruit) <- results) print(fruit)

結果為orange

正如你看到的,for表示式模式還可以過濾掉不匹配的值。

偏函式模式

val withdefault: option[int]=> int =

match

4.1 通配模式

變數 match
4.2 簡單模式種類

val x = 5

val result = x match

val x = 5

val y = 5

val result = x match

val x = 5

val y = 5

val result = x match

case

class

test

(x: int)

val test1 = test(5)

val result = test1 match

例1:

val lst1 = list(0, 1, 2)

val result = lst1 match

例2:val lst1 = list(0, 1, 2)

val result = lst1 match

val tuple1 = (1, 2, 3)

val result = tuple1 match

val str = "this is a string"

val result = str match

val x = 5

val result = x match

val str = "this is a string"

val result = str match

val str = "this is a string"

val result = str match

4.3 封閉類

sealed

abstract

class

expr

case

class

var(name: string)

extends

expr

case

class

number

(num: double)

extends

expr

case

class

unop

(operator: string, arg: expr)

extends

expr

case

class

binop

(operator: string, left: expr, right: expr)

extends

expr

def

describe

(e: expr) : string = e match

上面宣告在編譯時會出現警告,是的,編譯器將檢查封閉類所有可能的值是否都做了匹配

Scala學習筆記 樣本類和模式匹配

1.樣本類 在申明的類前面加上乙個case修飾符,帶有這種修飾符的類被稱為樣本類 case class 被申明為樣本類的類的特點 1.會新增和類名一致的工廠方法 2.樣本類引數列表中的所有引數隱式獲得了val字首,因此它被當做字段維護 3.編譯器被這個樣本類新增了tostring hashcode ...

Scala學習筆記 樣本類和模式匹配

1.樣本類 在申明的類前面加上乙個case修飾符,帶有這種修飾符的類被稱為樣本類 case class 被申明為樣本類的類的特點 1.會新增和類名一致的工廠方法 2.樣本類引數列表中的所有引數隱式獲得了val字首,因此它被當做字段維護 3.編譯器被這個樣本類新增了tostring hashcode ...

Scala基礎(4) 陣列

import scala.collection.mutable.arraybuffer object demo def changint unit def signumarr arr array int 固定陣列 val arr1 new array int 3 初始值都是0 val arr2 ar...