Scala2.8新しいプロパティ:コードをより簡潔にするネーミングパラメータとデフォルトパラメータ
原文:
翻訳:Xuefeng Wu
Scala 2.8は、再設計された集合クラスライブラリ、命名およびデフォルトパラメータ、continuations、a pimped REPLなど、多くの興味深い新しい特性を導入します.後で、名前とデフォルトのパラメータを示すと、私たちのScalaコードがより簡明になります.
Scala 2.7の例を挙げましょう.ID、注文項目、輸送モードのある注文です.
注文IDは「強制明細」の必須であり、注文項目と輸送モードはデフォルトで使用できます.そのため、補助構造方法を提供しなければなりません.
IDのみで注文を作成できるようになりました.
これにより、空注文項目(もちろん、空注文項目の注文は実際の意味がありません)と標準輸送モードの注文が作成されます.
一方ではこれがよいが,他方ではコードを大きくする.そして、読者にどれが強制されたのか、どれがデフォルトなのかを探すのにもっと時間がかかります.
Scala 2.8では、デフォルト値をタイプの後ろに簡単に置くだけで、デフォルトのクラスパラメータを定義します.
デフォルト値が設定されているパラメータにかかわらず、
受注項目と標準輸送を使用しない受注が作成されます.しかし、これは補助的な構造方法を必要としない.WoW!
しかし、注文項目にかかわらず、輸送モデルをどのように伝えますか?プライマリ・コンストラクション・メソッドのパラメータの順序を見ると、受注項目を渡してから輸送モードを実行する必要があります.
名前付きパラメータがゲームに入る番です.パラメータ値に名前を付けるのは簡単ですが、
これでScalaはどうすればいいか知っています.WoW!
Eastsun Scale 2.8味見:名前付きパラメータとデフォルトパラメータ
http://eastsun.iteye.com/blog/402092
これはルビーの機能と似ています.名前付きパラメータは、Scalaがどの値を入力したいかを知るためだけでなく、パラメータが入力されたときにエラーを回避するために使用されます.
翻訳:Xuefeng Wu
Scala 2.8は、再設計された集合クラスライブラリ、命名およびデフォルトパラメータ、continuations、a pimped REPLなど、多くの興味深い新しい特性を導入します.後で、名前とデフォルトのパラメータを示すと、私たちのScalaコードがより簡明になります.
Scala 2.7の例を挙げましょう.ID、注文項目、輸送モードのある注文です.
case class Order27(id: Long,
items: List[Item],
mode: ShippingMode)
case class Item()
sealed trait ShippingMode
case object StandardShipping extends ShippingMode
case object ExpressShipping extends ShippingMode
case object OvernightShipping extends ShippingMode
注文IDは「強制明細」の必須であり、注文項目と輸送モードはデフォルトで使用できます.そのため、補助構造方法を提供しなければなりません.
case class Order27(id: Long,
items: List[Item],
mode: ShippingMode) {
def this(id: Long, items: List[Item]) =
this(id, items, StandardShipping)
def this(id: Long, mode: ShippingMode) =
this(id, Nil, StandardShipping)
def this(id: Long) =
this(id, Nil, StandardShipping)
}
IDのみで注文を作成できるようになりました.
val order = Order27(1)
これにより、空注文項目(もちろん、空注文項目の注文は実際の意味がありません)と標準輸送モードの注文が作成されます.
一方ではこれがよいが,他方ではコードを大きくする.そして、読者にどれが強制されたのか、どれがデフォルトなのかを探すのにもっと時間がかかります.
Scala 2.8では、デフォルト値をタイプの後ろに簡単に置くだけで、デフォルトのクラスパラメータを定義します.
case class Order28(id: Long,
items: List[Item] = Nil,
mode: ShippingMode = StandardShipping)
デフォルト値が設定されているパラメータにかかわらず、
val order = Order28(1)
受注項目と標準輸送を使用しない受注が作成されます.しかし、これは補助的な構造方法を必要としない.WoW!
しかし、注文項目にかかわらず、輸送モデルをどのように伝えますか?プライマリ・コンストラクション・メソッドのパラメータの順序を見ると、受注項目を渡してから輸送モードを実行する必要があります.
val order = Order28(1, HERE GOES THE ITEM LIST, OvernightShipping)
名前付きパラメータがゲームに入る番です.パラメータ値に名前を付けるのは簡単ですが、
val order = Order28(1, mode = OvernightShipping)
これでScalaはどうすればいいか知っています.WoW!
Eastsun Scale 2.8味見:名前付きパラメータとデフォルトパラメータ
http://eastsun.iteye.com/blog/402092
これはルビーの機能と似ています.名前付きパラメータは、Scalaがどの値を入力したいかを知るためだけでなく、パラメータが入力されたときにエラーを回避するために使用されます.