高卒文系Scala vol.8 - お手軽コンテナのTuple -

Scala本、3.3辺り。

1ページで済ませられてますので、簡単に済ましますw

Scala本でも謳っていますが、JavaのJavaBeansの代わりになるコンテナクラスがScalaでは用意されています。

JavaはVOとかDTOとかの定義が面倒くさい事で有名(?)ですが、ScalaではTupleがその面倒くささを取り除いてくれます。

val container = (1985, "zetta", 24, "1985/4/16", "man")
println(container.getClass)
println(container.toString)
println(container._1)
println(container._2)
println(container._3)
println(container._4)
println(container._5 + "\n")
val container2 = (container, "developper")
println(container2.getClass)
println(container2.toString)
println(container2._1)
println(container2._2)
class scala.Tuple5
(1985,zetta,24,1985/4/16,man)
1985
zetta
24
1985/4/16
man
class scala.Tuple2
((1985,zetta,24,1985/4/16,man),developper)
(1985,zetta,24,1985/4/16,man)
developper

()の中にTupleに保持させたい値を複数指定する事で、簡単にコンテナオブジェクトが生成できます。

「_n」はTupleのpublicフィールドです。イミュータブルなので、後から値を設定する事もできます。

Tupleの実際の型は、()に指定したパラメータの型と数で決まります。

ちなみにパラメータ数の上限は今のところ、22個までらしいです。

Scalaでは、単純なDTOの為に、わざわざ自作でクラスを定義する必要がありません。

Javaでも、FactoryMethodを使えばできない事も無いとおもいますが・・・

わざわざ作る程の恩恵が得られるかどうか・・・。

型安全なTupleをJavaで実装しようとすると、かなり苦労しそうです。。。

簡単なDTOを生成するのにTupleは有用ですが、

フィールドに名前をつけられない、というのがネックですね。

複数レイヤ間のDTOとして使うには、向いていないかもしれません。

このエントリーをはてなブックマークに追加
comments powered by Disqus