Scala
2.8中Builder模式的另一种替代方法是使用具有默认参数和命名参数的不可变case类。有点不同,但效果是智能默认值,所有指定的值以及仅通过语法检查指定一次的内容…
以下使用字符串作为简洁/速度的值…
scala> case class Pizza(ingredients: Traversable[String], base: String = "Normal", topping: String = "Mozzarella")defined class Pizzascala> val p1 = Pizza(Seq("Ham", "Mushroom")) p1: Pizza = Pizza(List(Ham, Mushroom),Normal,Mozzarella)scala> val p2 = Pizza(Seq("Mushroom"), topping = "Edam") p2: Pizza = Pizza(List(Mushroom),Normal,Edam)scala> val p3 = Pizza(Seq("Ham", "Pineapple"), topping = "Edam", base = "Small") p3: Pizza = Pizza(List(Ham, Pineapple),Small,Edam)
然后,您也可以将现有的不可变实例也用作构建器…
scala> val lp2 = p3.copy(base = "Large")lp2: Pizza = Pizza(List(Ham, Pineapple),Large,Edam)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)