このページの記事一覧
● 2012年9月30日日曜日 - [Scala] Eclipse に Scala の Maven プロジェクトを インポート。の続き
● 2012年9月28日金曜日 - [Scala] Eclipse に Scala の Maven プロジェクトを インポート
● 2012年9月26日水曜日 - [Scala] REPLを使う
● 2012年9月24日月曜日 - Sakura エディタ で HTML エンコードマクロを作る。
● 2012年9月23日日曜日 - [Scala] match 文の仕組み
● 2012年9月21日金曜日 - [Scala] 正規表現によるマッチ
● 2012年9月20日木曜日 - [Scala] 一般クラスのマッチ

2012年9月30日日曜日

[Scala] Eclipse に Scala の Maven プロジェクトを インポート。の続き

前回、m2eclipse-scalaを使って、Scala プロジェクトの pom.xml を Eclipse にインポートした。
インポートの結果作成された .project ファイルと、.classpath ファイルの中身を確認しておく。

2012年9月28日金曜日

[Scala] Eclipse に Scala の Maven プロジェクトを インポート

Eclipse に Scala の Maven プロジェクトを m2e を使ってインポートする。

m2eclipse-scala を使う。
これをインストールしておかないと、pom.xml を import するときに、 maven-scala-plugin:2.15.2:compile と testCompile の resolve ができずにエラーになってしまう。


2012年9月26日水曜日

[Scala] REPLを使う

これまで Scala は Eclipse IDE で使ってきた。
Eclipse IDE で使う分には Scala SDK のインストールは必要ないのでインストールしていなかったのだが、 ちょっとしたことを確認するのに REPL があると便利なので入れてみる。

Scala の本家 から最新の stable release である Scala 2.9.2 をダウンロード。
Windows 版は zip 版と msi 版があるが msi 版は何がどう設置されるのかわからないので zip 版をダウンロード。 展開して bin ディレクトリにパスを通す。

これだけで準備は完了。REPL を使ってみる。

2012年9月24日月曜日

Sakura エディタ で HTML エンコードマクロを作る。

Blogger で XML ソースを書く際には 特殊文字をエンコードする必要があるのだが、面倒なのでエディタで一括で処理できるようにしよう。普段はサクラエディタ (Sakura Editor) を使っているので、サクラエディタのマクロとして作ることにする。

2012年9月23日日曜日

[Scala] match 文の仕組み

このブログを見て match 文 の仕組みが分かった気がするのでメモしておく。
List のマッチでは case List(x,y) みたいな形式だったので気が付かなかったのだが、 case 句には オブジェクトも書くことができる。

2012年9月21日金曜日

[Scala] 正規表現によるマッチ

正規表現を使った match ... case 文を使ってみる。

val p : Regex = ".*no=([0-9]+),name=(.*)".r;
val values = List(
  "no=10,name=ten",
  "no=11,name=eleven",
  "no=20,name=twelve" );

for (value <- values ) {
  value match {
    case p("10", v) => println("name for 10: " + v)
    case p("11", v) => println("name for 11: " + v)
    case p(n, v) => println("name, value= " + (n,v))
  } 
}

name for 10: ten name for 11: eleven name, value= (20,twelve)

2012年9月20日木曜日

[Scala] 一般クラスのマッチ

List や Tuple ではない一般のクラスの場合、unapply、unapplySeq いわゆる抽出子(extractor)を定義しておくことで match ... case 文で使えるようになる。

...
  val a = new MatchSampleClass;
  a match {
    case MatchSampleClass(x, y) => 
      println("x: " + x + " y: " + y);
    case _ => println("OTHER: " + a);
  }
....

class MatchSampleClass
object MatchSampleClass {
  def unapply(obj : MatchSampleClass) : Option[(String, String)] = {
    return Option(("ONE", "TWO"));
  }
}

x: ONE y: TWO