Scala日記

Scalaの備忘録。ときどき研究の話。

2016-01-01から1年間の記事一覧

None を含むオブジェクトを Java の deep clone ライブラリで clone すると複数の None オブジェクトができる。この None は case 文で match しない。

完全にハマったので覚書。 ディープクローンを手軽にやりたくて、このライブラリを使ったはいいのだけど、 github.com 突然 case 文で None が case None => にマッチしなくなった。 そんなことがありうるのかと思って調べてみたら、このあたりで議論されて…

基本コンストラクタの引数は他のメソッド内で使わない場合 private field として保持されない

入門書で明示的に教えてくれないシリーズその2。 class A(s:String){ def i = s.toInt } class B(s:String) class C(s:String){ val i = s.toInt } 上のようなコードにおいて、Aのsが private field として保持されるのはみんな知っているが、BやCのsが pri…

Gnu Parallel の良い入門用資料

「今日から使い切る」 ための GNU Parallel による並列処理入門 from Koji Matsuda www.slideshare.net

Option型のコレクションから Some(x) の値 x だけを取り出すには flatten

val opts: Seq[Option[Int]] = Seq(Some(2), None, Some(3)) のようなものから値のあるものだけを取り出して、 List(2, 3) を作りたいときに、Scalaを覚えたての頃はやり方がよく分からなくて、最初にやっていたのが opts.filter(_ != None).map(_.get) だっ…

=> Unit と () => Unit と Unit => Unit の違い

先日、op: Unit => Unit と書かざるを得ない状況に直面した。それで、この関数を op()として呼び出したときに「多分あなたが意図していることと違うことしてますよ」みたいなwarningが出て気づいたこと。ScalaのUnitは値がないことを表す型なわけだが、「実…