2010-05-01から1ヶ月間の記事一覧

Thred からデバッグ情報を取得する

Thredからのデバッグ情報の取得 Thread のスタック情報から現在のメソッド名や行数などのデバッグ情報を取得。 public class Debug { public static String currentFile() { return Thread.currentThread().getStackTrace()[2].getFileName(); } public stat…

メソッドの戻り値推論

これは普通に戻り値 4 def method() = { 2 * 2 } println(method) // 4 これも戻り値 4 def method() = 2 * 2 println(method) // 4 こうするとUnit def method() { 2 * 2 } println(method) // () こうすると当然戻り値 4 def method():Int = { 2 * 2 } pri…

foldLeft と foldRight のエイリアス

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){_…

可変長引数としてリストを渡す

可変長引数の定義 可変長引数にするには以下のように書けば def output(strs: String*) { strs.foreach(print) } output("hge1 ", "hoge2 ", "hoge3 ") 以下の出力が得られます。 hge1 hoge2 hoge3 List[String]を渡す 可変長引数を取る関数にListを渡すと、…

Scala の各種起動方法

今更ながらScalaの起動方法まとめ。 Scala インタープリタ ちょいと試すにはインタープリタ。 >scala Welcome to Scala version 2.8.0.RC2 (Java HotSpot(TM) Client VM, Java 1.6.0_12). Type in expressions to have them evaluated. Type :help for more …

vim の Scala プラグイン

sbaz にて scala-tool を取得すると、各種ツールのプラグインが入手できます。ここでは vimプラグインを適用してみます。 sbaz によるscala-tool-supportの取得 以下のコマンドにてscala-tool-supportを取得します。 > sbaz install scala-tool-support plan…

eclipse のScalaプラグインがバギーなのでNetBeanプラグインを試してみた

scala 2.8 のダウンロード http://www.scala-lang.org/downloads から最新版ダウンロード(scala-2.8.0.RC2.zip) パスにスペースを含まないディレクトリに解凍。ここでは C:\scala\scala-2.8.0.RC2 とした。 環境変数に以下を設定 SET SCALA_HOME=C:\scala\sc…

trait のミックスインはwithだけのがきれいだと思うのですが

トレイトのミックスインには extends か with を使いますが、何が違うのでしょうか。以下のトレイトがあった場合、 trait traitA trait traitB Foo クラスに traitA をミックインするには以下のようにします。 class Foo extends traitA traitB のミックイン…

型パラメータの境界とは

パラメータ境界 型パラメータには以下の3つの境界が設定できる。 上限境界(upper bound) 例 hoge[A <: T] A が T のサブタイプでなければならない 下限境界(lower bound) 例 hoge[A >: T] A は T のスーパータイプでなければならない 可視境界(view bound) 例 hoge[A A が T として扱える(暗黙の型変換により変換可能または A が T のサブタ</:>…

型パラメータの変位指定

型パラメータの変位 型パラメータには + や - の変位アノテーションを付けることで変位指定ができる。型パラメータの変位には以下の3つがある。 不変(nonvariant) : [A] 共変(covariant) : [+A] 反変(contravariant) : [-A] 不変 不変とした場合、funcの引数…