我在谷歌搜索找到a case class和a 之間的差異class。每個人都提到當你想在類上進行模式匹配時,使用用例類。否則使用類并提及一些額外的額外津貼,如equals和hash code overriding。但這些是為什么應(yīng)該使用案例類而不是類的唯一原因?我想在Scala中這個功能應(yīng)該有一些非常重要的原因。有什么解釋或者是否有資源可以從中了解有關(guān)Scala案例類的更多信息?
3 回答

心有法竹
TA貢獻1866條經(jīng)驗 獲得超5個贊
案例類可以看作是普通的和不可變的數(shù)據(jù)保持對象,它們應(yīng)該完全取決于它們的構(gòu)造函數(shù)參數(shù)。
這個功能概念允許我們
使用緊湊的初始化語法(
Node(1, Leaf(2), None))
)使用模式匹配來分解它們
有隱含地定義的相等比較
結(jié)合繼承,case類用于模擬代數(shù)數(shù)據(jù)類型。
如果一個對象在內(nèi)部執(zhí)行有狀態(tài)計算或表現(xiàn)出其他類型的復雜行為,它應(yīng)該是一個普通的類。

Cats萌萌
TA貢獻1805條經(jīng)驗 獲得超9個贊
沒有人提到案例類也是Product這些方法的實例并因此繼承這些方法:
def productElement(n: Int): Any
def productArity: Int
def productIterator: Iterator[Any]
其中productArity返回的類的參數(shù)的數(shù)量,productElement(i)返回我個參數(shù),并productIterator允許通過迭代他們。
添加回答
舉報
0/150
提交
取消