[英]What is the return type of scala case class?
給定代碼:
abstract class activity {
case class Fun(sports: String, eat: String) extends activity
val fun = Fun("soccer","apple")
}
樂趣的回報類型是什么?
fun
既不是函數也不是方法,因此它沒有返回類型。 fun
是Fun
類型的。
有趣。 這是對activity
類的遞歸依賴。 類型應該是Fun
。 但是,如果您嘗試實例化一些具體的類並訪問成員:
abstract class activity {
case class Fun(sports: String,eat:String) extends activity
val fun = Fun("soccer","apple")
}
object Main extends App {
class concrete extends activity
val x = new concrete // StackOverflowError exception!
}
您會收到一個StackOverflowError
異常。 這是預期的行為嗎?
它是Fun
的類型
abstract class activity {
case class Fun(sports: String, eat: String) extends activity
val fun: Fun = Fun("soccer", "apple")
}
當您執行Fun("soccer", "apple")
它會歸結為Fun.apply("soccer", "apple")
並且案例類伴隨對象的默認apply
方法返回該類的實例,因此它具有return鍵入Fun
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.