流れるようなインタフェース論

流れるようなインターフェイス - 予定は未定Blog版」の話。

IokeだとRangeオブジェクトを使う場面ですね。

オブジェクトにはRangeオブジェクトを返す「..」メソッドが用意されていて、例えば「"hogepiyofoobar".substr(2..5)」のような使い方ができます。FromとToのパラメータは双方で強い関係があるオブジェクトだから、あまり切り離さないほうが正解じゃないかなーと思ったり。ちなみに、5..2のレンジは[5,4,3,2]のように降順の範囲として扱います。マイナスは…だんだん面倒になってきたw

こんな感じ。マイナスは、最後からの逆順を表す。逆順のレンジ指定は、該当範囲なしで""を返却する。

iik> "abcde" [1..2]
+> "bc"

iik> "abcde" [4..2]
+> ""

iik> "abcde" [2..-1]
+> "cde"

iik> "abcde" [2..-2]
+> "cd"

iik> "abcde" [-1..-3]
+> ""

静的言語、特にJavaとかは静的チェックを如何に効かせるかを重視する場合があるけど、あまりこだわり過ぎると実装が複雑になるデメリットが勝るような気がする。最終的には例外処理等の実行時チェックに頼る場面が出てくるわけだから、実装をある程度シンプルに保ちつつ、「ここから先は静的チェックされませんよ」みたいなラインは必要になるんじゃないかなーと思います。例えば、thisを返せば済む程度のシンプルな役割に徹する方が利用者側も動きを読みやすい、…みたいなのはその線の一つというか。

とかとか、毎度無責任発言を繰り返す。