import scala.io.{BufferedSource, Source}
/**
* 用type關鍵字定義抽象類型
* 抽象類型可用在方法中
*/
trait Reader {
type In <: java.io.Serializable //抽象類型限定爲可序列化的(In的上界)
type Contents
def read(in: In): Contents
}
/**
* 基礎trait時需要指明抽象類型是什麼
*/
class FileReader extends Reader{
type In = String
type Contents = BufferedSource
override def read(name: In) = Source.fromFile(name)
}
object Abstract_Type {
def main(args: Array[String]): Unit = {
val fileReader = new FileReader
val content = fileReader.read("/tmp/test.txt")
for (line <- content.getLines) {
println(line)
}
}
}
scala進階16-抽象類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.