Scala

mapのタイミング

mapが実行されるタイミングの確認。 val a = List(1, 2, 3) def withPrint(x: Int): Int = { println(x) x } println("List Map") val b = a.map(withPrint) println("foreach") b.foreach { x => println("1st loop %s".format(x)); } println("foreach") b…

[プログラミング] 配列の比較

Array型を==で比較すると参照の比較になる。Seqあたりに型変換したあとに比較すると、Listなどと同じように内容を比較できる。 scala> val a = Array(1, 2, 3) a: Array[Int] = Array(1, 2, 3) scala> val b = Array(1, 2, 3) b: Array[Int] = Array(1, 2, 3…

[プログラミング] 暗黙の型変換とか暗黙の引数の確認

一体どの関数が呼ばれているのかわからないことに定評のあるscalaの自動型変換/暗黙の引数だが、コンパイル時に-Xprint:typerオプションを付与することで確認可能である。 implicit.scala val a = Map("a" -> 1, "b" -> 2) a.map(_._2) オプションをつけて実…

[プログラミング] スクリプトとして実行した際のコマンドライン引数

scalaをスクリプトとして実行した際には、コマンドライン引数はargsで参照できる。args.scala println(args.mkString(", ")) 実行結果は以下のとおり。 $ scala args.scala arg1 arg2 arg1, arg2

Triggered Executionの対象ファイル

sbtではタスクの前に~(チルダ)をつけて実行すると、ファイルが更新されるたびに、再度タスクが実行される。再度タスクが実行されるためのトリガーは、タスクの依存関係などに関係なくProject traitのwatchPathsが返すパスで示されるファイルのいずれかが更新…

サブプロジェクトを使う場合の注意

Simple Build Toolではサブプロジェクトを利用する際に、複数のサブプロジェクトで同じ外部Jarを利用する場合であっても、それぞれのプロジェクト毎にJarファイルを保存する。これを防ぐには、外部Jar専用のプロジェクトを作成し、外部Jarを利用するプロジェ…

ScalaでHadoopのジョブを書く

HadoopのジョブをScalaで書くためのこんなものがある。 - http://blog.jonhnnyweslley.net/2008/05/shadoop.html試したところ、サンプルがHadoop 0.20.2では動かないっぽい。 サンプルを動くように改変してみた。WordCount.scala import shadoop.SHadoop._ i…

Inner Class

JavaのInnerクラスを参照する際の方法 public class A { public class InnerClass { } } 上記のようなクラスが会った場合には"#"を使って以下のように参照できるようだ A#InnerClass

mutable.Mapはなんなんだろうか

scala.collection.mutable.Mapの要素の追加が+=演算子なんだけど、これはなんでこんな腐った仕様になってるのだろうか val a = scala.collection.mutable.Map("hoge" -> 1) a = a + ("foo" -> 2) これは当然エラー val a = scala.collection.mutable.Map("ho…

優先順位付キュー

優先順位付キューを使おうとしたときにヘルプを見ても、使い方がよくわからなかったためメモ。*1http://www.scala-lang.org/api/current/scala/collection/mutable/PriorityQueue.htmlクラスはscala.collection.mutable.PriorityQueue enqueueで要素を追加 s…