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

implicit value の定義方法いろいろ

このエントリは Scala Advent Calendar jp 2011 の四日目です。Scala には implicit parameter という機能があります。どういう機能かと言うと、引数に implicit という修飾子をつけると、関数呼び出しの際にその引数を省略することが可能になるというもので…

クラスの extends とトレイトの extends の違い

Scala の extends と with の意味合いがちょっと解りづらかったので整理してみました。先に結論を書いておくと以下になります。 extends の直後は必ずクラスになる トレイトは mixin するために必要な条件を持つ これだけだとちょっと何言ってるんだって感じ…

Loanパターンのアレに Conceptパターンを足してみたよ

Loanパターンをfor式で使えるようにしてみたよ に Conceptパターンを足してみました。と言うのも、後始末のメソッドは close() だけとは限らず、リソースによって dispose() や release() destroy() など様々あります。それら全部に対応できるといいなと思っ…

Loanパターンをモナドfor式で使えるようにしてみたよ

みんな大好きLoanパターンですが、複数のリソースを扱いたい時などネストが深くなってしまうのでちょっと困ってしまいます。そこでLoanパターンをモナドfor式で使えるようにしてみました。 class Loan[T <: {def close()}] private (value: T) { def foreach[U](f: T => U): U = try { f(value) } finally { value.close() </:>…

List内に最も多く出現するオブジェクトを取得するメソッド

Twitterでこんな処理はどう書けばいいんだろう?というツイートがあって、Scalaの勉強がてらちょっと書いてみました。仕様は以下の通り 引数で任意の要素型のListを受け取り、そのList内に最も多く出現するオブジェクトを取得する。 最も多く出現するオブジ…

Scala2.8 と Lift2.2 のアーキタイプを M2Eclipse 上に import する

Scalaの勉強を始めました。Liftで何か作ろうとアーキタイプを作成したんですが、どはまりしたのでメモを残しておきます。 mvn archetype:generate \ -DarchetypeGroupId=net.liftweb \ -DarchetypeArtifactId=lift-archetype-basic_2.8.1 \ -DarchetypeVersi…