就是在普通類前加了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...