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 件のコメント:
コメントを投稿