1
我試圖讓TreeNode子類如何/在哪裏實現與產品相關的方法?
org.apache.spark.sql.catalyst.trees.TreeNode
類的星火2.0.0源代碼的把握,卻發現產品的部分有趣。
的定義開始爲
abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product {
然後我考察trait Product
和無法弄清楚如何做TreeNode
瞭解哪種方法ProductArity
或trait Product
需要ProductElement
的統計信息。
我搜索了一會兒,發現有人指出,Scala編譯器會找出那些統計數字case class
,但TreeNode
不是個例類,我無法找到一些協議或暗示Product
可以從實施得到獲得所需的數字,例如ProductArity
返回。
那麼有人知道背後的黑魔法是什麼?
是的我仍然可以接受它:P。還有一件事:使'TreeNode'擴展'Product'的意圖是什麼?如果case類是可繼承的,那麼我們可以設計'TreeNode'作爲'抽象case類'還是類似的東西? – Dragonly
您可以從案例類繼承,但它很少有意義。而使'TreeNode'成爲'抽象案例類'將表現出與想要的非常不同的表現。 –