2010年03月23日 00:40

Scalaのメモ その2

Scalaのメモの続き。



クラスのフィールにアクセス修飾子を付けなかった場合のデフォルトは public になる。フィールドを隠したい場合は private を付ける必要がある。

クラス定義の本体にフィールド定義と並列にコードを書くと、コンストラクタの中でそれが実行される。
class ComplexNumber(r: Double, i: Double){
	private val real: Double      = r;
	private val imaginary: Double = i;
	println(toString());
	override def toString(): String = {
		if(imaginary == 0)
			real.toString();
		else if(imaginary > 0)
			real + " + " + imaginary + " i";
		else
			real + " - " + (-imaginary) + " i";
	}
}
new ComplexNumber(1.0, 1.5); // ここで生成するだけでクラス定義中の println が呼び出される



Javaのプリミティブ型を1文字目大文字にしたものが、そのままScalaでも使える。Byte, Short, Int, Long, Float, Double, Boolean, Char, StringString はプリミティブ型ではないが)。Javaクラスファイルにコンパイルされるときには、プリミティブ型かラッパークラスに変換されている。



文字列はJavaと同じ構文のほか、Scala独自のものとして raw string 構文がある。""" で囲むとバックスラッシュはおろか改行もそのまま含めることができる。
val s1 = """12345
  67890""";
val s2 = """12345
  |67890""".stripMargin;
1つ目の例は、67890の前に改行とスペースが入る。ソースコードの見た目のためにインデントしたい場合は、2つ目の例のように、先頭に | をつけて、stripMargin を呼び出せばいい具合にしてくれるらしい。



Scalaの等価を調べる演算子 == はJavaでいうところのequalsメソッドと同じで、値が等しいかどうかをチェックしている。型が違っていても拡大変換されて比較されるようだ。
1==1 // true
1==1L   // true
1==1.0  // true
1=="1"  // false



2010/03/25追記
その3に続く
タグ:scala
カテゴリ:テック
2010/03/23 Tue 00:40 | Comment(0) | TrackBack(0) | テック | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。