簡體   English   中英

Scala案例類的返回類型是什么?

[英]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既不是函數也不是方法,因此它沒有返回類型。 funFun類型的。

有趣。 這是對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM