加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读