2012年2月28日火曜日

mapBetween関数Scala版 その4(完結編)

昨日のポストのコードに対して、がくぞさんからまさにそれが欲しかったという修正を頂いたので掲載。



traitとして別途宣言せず、mapBetween関数が追加された無名クラスのインスタンスを返すようにimplicit conversionを定義する。(3〜7行目)
Seqのサブクラスとして何が来ようと、そのクラスを拡張した形で無名クラスが定義されるため、返り値がmutableになってしまうこともない。何より大変シンプルになってわかりやすい。

今度のseqToExtSeq関数の返り値は無名クラスのインスタンスになるため、返り値の型を明示できない。そのためか、main関数の後に定義すると、以下のようなエラーが出てコンパイル出来なかった。

value mapBetween is not a member of scala.collection.immutable.Range.Inclusive  Note: implicit method seqToExtSeq is not applicable here because it comes after the application point and it lacks an explicit result type mapBetween.scala
順番が入れ替わっているのはそのため。

とりあえず最初の手習いとしてはこれくらいにして、次は別のことをやってみる。

0 件のコメント:

コメントを投稿