「淡路島の電車の運行状況を取得する方法」のinterface問題をscalaの型クラスで書いてみた
元ネタはひしだまさんのエントリです。
淡路島の電車の運行状況を取得する方法 - ひしだまの変更履歴
その元ネタはこちらです。
「淡路島の電車の運行状況を聞いた話」をシステム開発に置き換えてみる - 日々常々
interfaceを個別に増やすなら型クラスかな〜と思い試しに書いてみました。シンプルにする為に、いろいろ手を抜いていますのでご了承ください。
ついでなので、元の元記事のnull問題も解決して、DSLを使って日本語で会話している風にしてあります。実際に動くので、sbt等で試してみてください。
簡単に説明
型クラス
型クラスを使う事によって、型ごと個別に振る舞い(interface)の定義ができます。今回は鉄道路線だけですが、後から飛行機やバス等を個別に増やすこともできます。*1
null問題
なんという事でしょう。scalaだとnull問題はEither型で解決できてしまいます。Eitherは2つの型を別々に保持する為のコンテナ(箱)で、今回は、運行状況の取得に成功した場合の値(Right)と失敗した場合のメッセージ(Left)を格納しています。Maybeを使えというコメントが多かったようですが、失敗した原因も分かった方が良いですしね。
日本語DSL
日本語DSLはおまけです。scalaって簡単にこんな事が出来るんですよ。丸括弧は…見なかったことにしておいてください…(ノД`)
要望があれば、コードの詳しい説明も書きます。
尚、このエントリを読んだことによりjavaを投げ捨てたくなっても、当方は一切責任を持ちません(´・ω・`)
- 作者: Miran Lipovača,田中英行,村主崇行
- 出版社/メーカー: オーム社
- 発売日: 2012/05/23
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 580回
- この商品を含むブログ (44件) を見る
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (40件) を見る
*1:型クラスは後ほど別エントリで説明する予定です