basyura's blog

あしたになったらほんきだす。

scala

Ordered trait

Ordered trait を継承(or Mix-in)すると compare を定義するだけで = を使えるようになる。 class Sample(msgIn:String) extends Ordered[Sample] { val msg = msgIn def compare(that: Sample) = this.msg.toInt - that.msg.toInt } val s1 = new Sample("1…

名前渡しパラメータ

通常はファイル出力しないデバッグ用ログでも、メソッド呼び出しの際に toString で文字列生成されるので実は無駄にコストがかかっているという場合に使える(のか?)。 class Test { override def toString : String = { println("called Test#toString") …

メソッド定義と for 文

戻り値まで書く def test1(list: List[String]) : List[String] = { for (l <- list ; if l > "2") yield { "@" + l } } 戻り値を省略 def test3(list: List[String]) = { for (l <- list ; if l > "2") yield { "@" + l } } 中括弧も省略 def test2(list: L…

ローカル関数

object Sample { def main(args: Array[String]) { def join(name: String , family: String) : String = { return name + " " + family } println(join("basyura" , "hogehoge")) //=> basyura hogehoge } }メソッドの中にメソッド

overload

class A { def hoge(param: Int) { println("Int -> " + param) } def hoge(param: String) { println("String -> " + param) } } var a = new A() a.hoge(1) //=> Int -> 1 a.hoge("1") //=> String -> 1

override

class A(msg: String) { override def oString = msg } 存在しないメソッドを override しようとすると (fragment of sample.scala):3: error: method oString overrides nothing override def oString = msg ^

シングルトンオブジェクト

今日もコップ本Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)作者:Martin Odersky,Lex Spoon、Bill VennersインプレスAmazon Scala は、クラスが静的メンバー(static member)を持てないという点で Java よりもオブジェ…

リストへの要素の追加(append)の問題

今日もコップ本Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)作者:Martin Odersky,Lex Spoon、Bill VennersインプレスAmazon List クラスは要素の末尾への追加(append)をサポートしていないが、それは追加操作に要する…

メソッド呼び出し

var list = List(1,2,3) 0 :: list //=> List(0, 1, 2, 3) は右被演算子であるリスト list のメソッド。メソッド名の末尾がコロンの場合には、メソッドは右被演算子から呼び出される。よって list.::(0) という形になる。

コップ本とどいたー

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)作者:Martin Odersky,Lex Spoon、Bill VennersインプレスAmazon勉強開始。 関数定義。全部書いた場合。 def hello(x: String) : String = { return "hello " + x } return …

Scala 勉強会

お決まりタグがあったはずだけど忘れた。今 lingr 落ちてるみたいだし。 日時:2009年11月03日 (火/祝日) 13:15〜15:40 講師:yayuguさん(http://d.hatena.ne.jp/yayugu/) 場所:Lingr http://lingr.com/user/signup?letmein=onsg Ustream:http://www.ust…

オススメ記事を見て始めたの巻き

まずはインストール ubuntu の場合 sudo apt-get install scala 終了 ('ー')ゞ Mac の場合 sudo port install scala 終了 ('ー')ゞ cygwin の場合 http://www.scala-lang.org/downloads から cygwin 版をダウンロード 解凍して適当なフォルダに格納 .bashrc …