Scala的Infix Type與Self Types
Infix Type:中值型別,允許帶有兩個引數的型別。
self-type
點選(此處)摺疊或開啟
-
object Infix_Types {
-
-
def main(args: Array[String]) {
-
-
object Log { def >>:(data:String):Log.type = { println(data); Log } }
-
"Hadoop" >>: "Spark" >>: Log //右結合,先列印出Spark,再列印出Hadoop
-
-
val list = List()
-
val newList = "A" :: "B" :: list //中值表示式
-
println(newList)
-
-
class Infix_Type[A,B] //中值型別是帶有兩個型別引數的型別
-
val infix: Int Infix_Type String = null //此時A是Int,B為String,具體型別名寫在兩個型別中間
-
val infix1: Infix_Type[Int, String] = null //和這種方式等價
-
- case class Cons(first:String,second:String) //中值型別
-
val case_class = Cons("one", "two")
-
case_class match { case "one" Cons "two" => println("Spark!!!") } //unapply
-
-
}
-
- }
點選(此處)摺疊或開啟
-
class Self {
-
self => //self是this別名
-
val tmp="Scala"
-
def foo = self.tmp + this.tmp
-
}
-
trait S1
-
class S2 { this:S1 => } //限定:例項化S2時,必須混入S1型別
- class S3 extends S2 with S1
-
class s4 {this:{def init():Unit} =>} //也能用於結構型別限定
-
-
trait T { this:S1 => } //也能用於trait
-
object S4 extends T with S1
-
object Self_Types {
-
-
def main(args: Array[String]) {
-
class Outer { outer =>
-
val v1 = "Spark"
-
class Inner {
-
println(outer.v1) //使用外部類的屬性
-
}
-
}
-
val c = new S2 with S1 //例項化S2時必須混入S1型別
-
}
-
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1983648/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Scala的Abstract Types
- 理解 Swift 中的元型別:.Type 與 .selfSwift型別
- Type classes in Scala
- Kotlin Type? vs Scala OptionKotlin
- The content of element type "package" must match "(result-types?,interceptors?...Package
- Scala是世界上最好的語言(一):Type Bound
- SAP為Storage Type 004啟用SUM報錯 - Storage types without pick-point stor.type
- Infix:from the office web of KotlinWebKotlin
- variable: Type 與 Type variable
- new self()與new static()
- plsql_varray_自定義type之測試小例_user_typesSQL
- &self 和 self 的區別
- 【Scala篇】--Scala初始與基礎
- Scala與Java的關係Java
- Scala 的方法與函式函式
- [翻譯]The Neophyte's Guide to Scala Part 12: Type ClassesGUIIDE
- Type與Class
- new static ,new self ,self::, $this的一些理解
- EF Core – Owned Entity Types & Complex Types
- Self-Attention GAN 中的 self-attention 機制
- TypeScript @typesTypeScript
- stock Types
- rust語法super、self和SelfRust
- SAP對PO收貨後LT06報錯-Allowed storage unit types not defined for storage type Z
- 關於 self 和 super 在oc 中 的疑惑 與 分析
- object-c [self class] 和 [self _cmd]Object
- 【Scala篇】--Scala中的函式函式
- Types of Locks (340)
- Scala學習 1.1 Scala基礎與語法入門實戰
- PHP中new static()與new self()的區別異同分析PHP
- Scala 中的集合(一):集合型別與操作型別
- scala語法 - 方法與函式函式
- Scala陣列、元組與集合陣列
- 學習Scala 方法與函式函式
- Scala學習(五)---Scala中的類
- Scala與Java差異(五)之Map與TupleJava
- 【Scala】Scala之ObjectObject
- Scala與Haskell的嚴謹優雅性比較Haskell