タグ

ブックマーク / unageanu.hatenablog.com (9)

  • 派生クラスでtype aliasの指定を強制する - うなの日記

    abstractなclass or trait に、型指定のない名前だけのtype aliasを書くと、派生クラスでこのtype aliasの定義を強制することができます。 abstract class Foo( ) { // 派生クラスで明示する必要があるtype alias // このクラスの派生クラスでは、Xのtype aliasを明示しなければならない。 type X // X型はこのクラス内で使用可能。 var x:X def getX:X = x def setX(value:X):Unit = this.x=value } // Fooの派生クラスを作成。 var foo = new Foo() { // 派生クラスでX型を指定 // 指定しないとコンパイルエラーになる。 type X = String var x = "aaaa" } // メソッド呼び出し。XはStrin

    派生クラスでtype aliasの指定を強制する - うなの日記
  • Scala+SpecsでMavenなJavaプロジェクトのテストを書く - うなの日記

    Specsは、Scalaで使えるBDDなテスティングフレームワークです。JUnit4アダプタが提供されており、Mavenに組み込んで使うことが可能!ということで、MavenなJavaプロジェクトのテストをScala+Specsで書く手順をまとめてみます。 といっても基的には、 pom.xmlにScalaでのビルドの設定やspecsへの依存設定を書く。 Specsのテストを書く。 「mvn test」! するだけ。依存モジュールなどはMavenが集めてきてくれます。 なお、SpecsについてはQuickStartぐらいしか読んでないので、変なこと書いてたらゴメンナサイ。 MavenなJavaプロジェクト 以下のような簡単な構成のJavaプロジェクトを例として説明します。 <プロジェクトルート> ├pom.xml └src └main └java └com └example └Kitten.

    Scala+SpecsでMavenなJavaプロジェクトのテストを書く - うなの日記
    katzchang
    katzchang 2010/12/07
  • mapとinject - うなの日記

    Google Collectionsを使ったmapとinjectを作ってみました。 @SuppressWarnings("unchecked") static <IN, OUT, X extends Collection<OUT>> X map( Collection<IN> collection, Function<IN,OUT> f ) { try { X out = (X) collection.getClass().newInstance(); for ( IN i : collection ) out.add( f.apply(i) ); return out; } catch (InstantiationException e) { throw new IllegalArgumentException( "unsupported collection.", e ); } cat

    mapとinject - うなの日記
    katzchang
    katzchang 2009/09/22
    Google Collectionsを使った例。
  • 今日の気づき - うなの日記

    たまに発生する以下のようなコードですが、 map = {} ... list = map[str] #ハッシュからリストを取得 if list == nil # リストが未作成であれば、 list = [] # リストを作成してハッシュに積む map[str] = list end list << number # リストに値を追加。 これは↓これでいいのか。 map = {} ... list = map[str] || map[str] = [] list << number ふむ。ちょいスッキリ。

    今日の気づき - うなの日記
    katzchang
    katzchang 2009/09/22
    "||"はor演算氏で、左がtrueなら左を返却し、左がfalseかつ右がtrueなら右を返却する。多分、両方falseならnilを返却する。
  • 最近の流行 - うなの日記

    以下のような書き方が個人的に流行中。 String[] strs = // 略 // 配列がnullでなければ各要素に対して処理を実行 if ( strs != null ) for ( String str : strs ) { // 処理 } forで列挙する対象がMap.Entryとかになると、Genericsもあって行がすぐに長くなってしまうのが難点。んー、定着するかは微妙だな。

    最近の流行 - うなの日記
    katzchang
    katzchang 2009/08/20
    あんまり使わないと思うけど、書き方は面白い。他に使いどころはないかな。
  • if文を式に変換する - うなの日記

    Javaのif文は「文」なので値を返しません。条件を評価した結果に応じて値を返す「式」を作るには三項演算子を使いますが、「これがどうしても気にわん!」という奇特な人のために(いるのか?)、こうすればifを「式」にして関数の引数にぶちこんだりできるよ! System.out.println( new Object() { String x() { if ( true ) { return "a"; } else { return "b"; } }}.x()); 実行結果です。 aまぁ、可読性、パフォーマンスともに無駄が多いので製品コード使ったらクビになりそうだけど。あー、似たようなネタで長い文字列をさくっと作るっていうのは前に書いたなー。 Strign str = new StringWriter(){{ for(int i=0;i<100;i++) write("a"); }}.toSt

    if文を式に変換する - うなの日記
    katzchang
    katzchang 2009/07/09
    匿名クラスは、生成直後なら定義したメソッドを使えるらしい。しらなんだ。
  • Runtime#addShutdownHook() - うなの日記

    System.exit()が好きなコードですが、案の定、必要な後始末をせずにSystem.exit()してるじゃないか!と思ったら、ShutdownHookが仕込まれていた。 Runtime.getRuntime().addShutdownHook( new Thread() { public void run() { System.out.println("x"); } }); try { System.out.println("a"); System.exit( 0 ); System.out.println("b"); } finally { System.out.println("c"); } 実行結果です。"x"がちゃんと出力されています。 a xコードでは、↑の「System.out.println("x");」に該当する部分で後始末が行なわれていました。途中で実行時例外になっ

    Runtime#addShutdownHook() - うなの日記
  • ハッシュのキーは文字列でいいのか? - うなの日記

    Rubyの文字列は「不変でない」んだよな。ということはハッシュのキーとして使った文字列が外部で変更された場合、ハッシュから値を取り出せなくなる場合があるんだよな、とふと思って検証してみたら違っていた。 # 文字列をキーとしてハッシュを作る。 key = "foo" hash = { key=>"value" } puts key puts hash[key] # => value # キーの値を変更 puts "---" key << "o" puts key puts hash[key] # キーの値が変わっているので取り出せないはず。 puts hash["foo"] # ハッシュ内のキーも更新されているはずなので取り出せないはず。 実行結果です。 foo value --- fooo nil value理由はRubyリファレンスマニュアル - Hashにちゃんと書かれています。 文字

    ハッシュのキーは文字列でいいのか? - うなの日記
    katzchang
    katzchang 2008/11/17
    「オブジェクト指向」って、この辺の不変・可変の扱いが判りづらいんだよなぁ…。
  • Jbehaveを使ってみた。 - うなの日記

    るびまのRSpecの記事を見たときから密かに気になってた振舞駆動開発 (Behaviour Driven Development:BDD)ですが、IBM developerWorks ビヘイビア駆動開発を舞台にした冒険より「Jbehave」というJavaでBDDするライブラリがあるらしいのでちょっと使ってみました。 振舞駆動開発とは何か。何がうれしいのか。 るびまのRSpecの記事で熱く語られています。 個人的なイメージはこんな感じ。注:間違っている可能性大です。真に受けないでくださいね。 Jbehaveを使うと、API仕様を書くのと同じ文法でテストが書ける! 「APIの詳細仕様」=「振る舞いを定義したコード」=「テストケース」になる! なので、「振る舞いを定義したコード」さえ書けばあとの2つはいらない→早く帰れる! Jbehaveを使ってみる Jbehaveを使ったテスト手順の概要は次の

    Jbehaveを使ってみた。 - うなの日記
  • 1