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

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

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