久しぶりにプログラミングネタ。 背景 List[Int]もList[String]もバイトコードでは同じ type erasureについて知ってる人は飛ばしてOK。 知らない人向けに簡単に説明すると、Scalaでは(Javaでも同じだけど)以下の様なメソッドのオーバーロードは定義出来ない。理由はList[String]とList[Int]がバイトコードレベルでは同じなので、2つのfooメソッドが同一のシグネチャになるため。詳しくは「type erasure」や「型消去」でググって欲しい。 // won't compile class C { def foo(list: List[Int]): SomeResult = { // ... } def foo(list: List[String]): SomeResult = { // ... } } 解決方法 一応、解決方法はいくつか思いつい
Document has moved, if you aren't automatically redirected go here.
前回のStateパターンのお話、おかげさまでかなり好評だったようです。流行のトレンドを追いかけるのはドキドキがいっぱいでモチベーションを維持する良い材料ではありますが、トレンドを楽しむにも「やりたい事をカタチにする」ために設計と実装の腕を磨いておかにゃなりませんですね。Stateパターンを適用すれば、状態(State)と事象(Event)および状態遷移表に基づいて見通しが良く変更に強い(かつ柔軟な)コードに落とすことができます。 状態遷移表に基づいてコードに落とすのは単調な作業です。状態の数だけclassを起こし、それぞれのclassに事象の数だけメソッドを定義するので、どのclassもまったく同じ構造です。お定まりのパターンを何度も淡々を繰り返すのは退屈ですが、計算機はこのテの作業が大好きです。文句も言わず嬉々としてやってくれます。今回のお題は「状態遷移表からC#コードを自動生成させてみ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く