scala學習總結4(巢狀類 隱式相關)

2021-09-27 07:53:32 字數 1332 閱讀 2318

巢狀類

object testinnerclass 

}class outerclass

}object outerclass

}

object testinnerclass 

}class outerclass

}}object outerclass

}

②內部類如果想要訪問外部類的屬性,可以通過外部類別名訪問。

即:外部類別名.屬性名 【外部類名.this 等價 外部類別名】

class outerclass 

} // 當給外部指定別名時,需要將外部類的屬性放到別名後.

var name : string = "curry"

private var sal : double = 3800

}

③型別投影:

object testinnerclass2 

}class outerclass2

}}

隱式函式:

①隱示函式基本介紹:

隱式函式是由implicit宣告的帶有單個引數的函式,這種函式會自動進行匹配,隱式函式可以有多個,但是需要保證在當前環境下,只有乙個隱式函式能被識別,隱式函式與函式名無關,只和函式返回型別及引數型別有關

隱式函式的豐富類庫功能:隱式函式可以動態地給某類增加方法

示例:

object testimplicit 

val mysql = new mysql1

mysql.delete()

//---------------------------------------

implicit def mytoint(i : double): int =

var a:int = 1.23

println(a)

}}class mysql1

}class db1

}

object testimplicateclass 

}val tt = new t

tt.t() //輸出 t

println(tt.test()) //輸出 date0922.t@d041cfnb

//注:tt.addsuffix() ==> db1$1(tt).addsuffix()

//db1$1(tt)返回的型別是 implicitclass$db1$2

}}class t()

scala總結 4 隱式轉換以及隱式引數

隱式轉換 implicit def inttostring i int i.tostring implicit def可以對一種型別的引數自動做轉換,在上面的隱式轉換作用域中,所有int 如果不符合編譯要求,會先被轉換為string 不可有多個隱式轉換,如再加乙個implicit def intto...

scala學習筆記10 隱式類

隱式類 在scala2.10之後開始提供了隱式類,可以使用implicit宣告類,可以擴充套件類的功能 def main args array string unit 定義eat方法 var b1 newbird b1.fly 呼叫類中的方法 b1.eat 呼叫隱式類中的方法 class bird ...

scala隱式引數 隱式函式 隱式類詳解

隱式函式 隱式類1 定義乙個普通變數,使用 implicit 關鍵字修飾,定義乙個函式呼叫這個變數當引數時,此時這個引數就被稱為隱式引數 2 隱式引數的作用 減少提供函式引數的數量,讓某些引數擁有隱藏的值 隱式變數 def main args array string unit def fun2 a...