タグ

ブックマーク / blog1.mammb.com (5)

  • foldLeft と foldRight のエイリアス - A Memorandum

    foldLeft 初期値を1として、arrの和を得る。 val arr = List(2, 3, 4) arr.foldLeft(1){(x, y) => x + y} 1 + 2 + 3 + 4 で 10 となる。 短く書くと、 arr.foldLeft(1)( _ + _ ) foldLeft には /: というエイリアスがあり、以下のように書ける。 (1 /: arr){_ + _} foldRight foldRight では適用の順番が逆になる。 val arr = List(2, 3, 4) arr.foldRight(1)( _ + _ ) 4+1 3+(4+1) 2+(3+(4+1)) の順番で適用される。 foldRight は :\ というエイリアスがあり、以下のように書ける。 (arr :\ 1){_ + _} foldLeft の /: とは引数の位置が逆になる。末

    foldLeft と foldRight のエイリアス - A Memorandum
  • 自身のJVMのプロセスIDを取得するには - A Memorandum

    細かいネタです。 実行している JVM のプロセスIDを取るには RuntimeMXBean 使うと簡単に取れます。 RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); String vmName = bean.getName(); long pid = Long.valueOf(vmName.split("@")[0]); System.out.println("VM Name : " + vmName); System.out.println("PID : " + pid); 実行結果はこんな感じ VM Name : 9588@hostname PID : 9588 RuntimeMXBean.getName() は、pid@hostname という名前を返すので、頭を抜き出せばプロセスIDが取得できます。 Sun の

    自身のJVMのプロセスIDを取得するには - A Memorandum
    nsyee
    nsyee 2013/05/25
  • 型パラメータの変位指定 - A Memorandum

    型パラメータの変位 型パラメータには + や - の変位アノテーションを付けることで変位指定ができる。型パラメータの変位には以下の3つがある。 不変(nonvariant) : [A] 共変(covariant) : [+A] 反変(contravariant) : [-A] 不変 不変とした場合、funcの引数には型パラメータで指定したものと同じものしか受け付けない。 object Sample001 { class Nonvariant[A] def func(arg:Nonvariant[Number]) {println(arg)} def main(args: Array[String]) { func(new Nonvariant[Any]) // エラー func(new Nonvariant[Number]) // OK func(new Nonvariant[Intege

    型パラメータの変位指定 - A Memorandum
  • 型パラメータの境界とは - A Memorandum

    パラメータ境界 型パラメータには以下の3つの境界が設定できる。 上限境界(upper bound) 例 hoge[A <: T] A が T のサブタイプでなければならない 下限境界(lower bound) 例 hoge[A >: T] A は T のスーパータイプでなければならない 可視境界(view bound) 例 hoge[A <% T] A が T として扱える(暗黙の型変換により変換可能または A が T のサブタイプ) 通常の型パラメータ 普通の型パラメータからおさらい。以下の Holder を考える。 class Holder[A] { private var contents:A = _ def set(value:A) {contents = value} def get:A = contents } 以下のように型パラメータとしてIntを指定した場合、当然 Doub

    型パラメータの境界とは - A Memorandum
  • Scalaを学ぶためのScala本の読み進め方 (10冊) - A Memorandum

    blog1.mammb.com から、さらに最近出たを追加して加筆 昔は家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。 個人的なお勧め順で紹介。 必須のコップScala スケーラブルプログラミング」 言語の作者である Martin Odersky 氏が著者の1人ということもあり、言語についての説明の詳細さ という点では、ここで紹介する書籍中で群を抜いています。邦訳も非常に読みやすくまとめられており、Scalaでプログラミングを行うなら必須です。一番良く参照するですね。 ただ、Scala が初めてという場合は、ページ数が 600 ページで内容も盛りだくさんなので、中盤ぐらいから消化不良を起こすかもしれません。Java の経験が豊富で、関数型言語の知識がありパターンマッチやコンスセルなどの用語で面喰わなけれ

    Scalaを学ぶためのScala本の読み進め方 (10冊) - A Memorandum
  • 1