oop – scala:如何建立基本的父子关系模型
发布时间:2020-12-16 18:58:21 所属栏目:安全 来源:网络整理
导读:我有一个Brand类,有几个产品 在产品类中,我希望对品牌有一个参考,如下所示: case class Brand(val name:String,val products: List[Product])case class Product(val name: String,val brand: Brand) 我怎么能把这些课程打包? 我的意思是,除非我有品牌,否
我有一个Brand类,有几个产品
在产品类中,我希望对品牌有一个参考,如下所示: case class Brand(val name:String,val products: List[Product]) case class Product(val name: String,val brand: Brand) 我怎么能把这些课程打包? 我的意思是,除非我有品牌,否则我无法创造产品 除非我有产品清单(因为Brand.products是val),否则我无法创建品牌 建模这种关系的最佳方法是什么? 解决方法
我想问一下为什么要重复这些信息,说明哪些产品与列表和每个产品中的哪个品牌有关.
不过,你可以这样做: class Brand(val name: String,ps: => List[Product]) { lazy val products = ps override def toString = "Brand("+name+","+products+")" } class Product(val name: String,b: => Brand) { lazy val brand = b override def toString = "Product("+name+","+brand.name+")" } lazy val p1: Product = new Product("fish",birdseye) lazy val p2: Product = new Product("peas",birdseye) lazy val birdseye = new Brand("BirdsEye",List(p1,p2)) println(birdseye) //Brand(BirdsEye,List(Product(fish,BirdsEye),Product(peas,BirdsEye))) 不幸的是,似乎不允许使用名称类来保护案例类. 另见这个类似的问题:Instantiating immutable paired objects (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |