2008-04-01から1ヶ月間の記事一覧

ビューティフルコードようやく買えた

ようやく昨日ビューティフルコードが売っているのを発見した。 帯が切れてたりしていつもなら絶対に買わないんだけど、 ここで買っておかないといつ手に入るかわからないので迷わず買った。帰りの電車で目次をみてて、せっかくだから、はじめから順に 読むの…

typeは関数型の別名をつけるためのものか

複数の関数で同じ意味合いの引数の型を一括で制御できるな。 こんな関数があるとして def f(x: (Int) => Int) = x(100) f((y: Int) => y * 100)なんてのがtypeを使って書くと type F = Int => Int def f(x: F) = x(100) f((y: Int) => y * 100)ってなる。 こ…

defがよくわからない

defは関数を宣言するとき。 って思っているのだが def a: String = "A"みたく変数を宣言できちゃう。 厳密には変数でなく関数なのかも。とりあえず、defとvalで比べてみる scala> def a: String = "HOGE" a: String scala> var b: String = "PIYO" b: String…

今日(いまさら)知ったこと

Pythonと同様""""""でくくれば、複数行にわたって書ける。 scala> var s = """ | hogehoge | piyopiyopiyo | | """ s: java.lang.String = hogehoge piyopiyopiyoXMLはそのままコードに書ける scala> var xml = <root><hoge></hoge></root> xml: scala.xml.Elem = <root><hoge></hoge></root>scala.xml.Elemクラス…

HashMapをつかってみた。

Javaからいつの間にか脱線。 HashMapへの要素追加。 import scala.collection.mutable.HashMap var h = new HashMap[String, Any] h + ("hoge" -> "HOGE") h.update("fuga", "FUGA")updateメソッドで追加するのと、 +メソッドで追加するのとできるみたいだ。…

Staticインポートって

先週Scalaをいじっていて、Javaのジェネリックに行き着いた。 ついでといってはなんだけど、Java5の新機能も確認してみている。(現在進行中) Staticインポートとは? Staticメンバーをインポートできる。 意外と地味? つかってみる import static java.la…

パスって重要。

Scalaのapiを見つけたときふと思ったこと。 これは、 Javaにライブラリの説明があるapiがある>scalaにもあるのでは?>発見。 にいたっている。幸いにしてJavaにapiがあることを知っていたから今回 もscalaにもあるのでは?って発想にいたって、発見できた…

ArrayBufferを知る。そしてapiあった。

みずしまさんよりコメントをいただいた。ありがとうございます。java.util.ArrayListもいいけど、 scala.collection.mutable.ArrayBufferってのがあるのか。よくよく考えたら、ダウンロードしたpdfしか見てなかったけど、 Javaみたくapiあるんじゃないか?と…

Genericsに絡んで書き方注意。

ArrayListを使うのに、 var a = new java.util.ArrayList() a: java.util.ArrayList[Nothing] = []となって、型がNothingとなってしまってaddで要素を追加しようとすると エラーになった。 あ〜これが、うわさのGenericsか!と思って var a = new java.util.…

またArrayにはまった?

最近Arrayすきだな〜。 本日発見。 var a = new Array(3)見たく、配列の長さを指定してnewもできる。 ついでに、 中身を取得?するapply 中身を更新するupdate Iteratorを返すelements 指定した要素の配列を返すsubArray flatMapこれはまだためしてない。 っ…

JavaでいうGenericsか。

ソースをみてて意味がわからなかった def func[A](x: List[A]) = ....の[A]の意味。 いろいろ調べてみると、JavaでいるGenericsと同じ感じらしい。 Javaは1.4以降はほぼ書いたことがなく、新機能を本でみてたくらい だったので、この結論にいたるのにかなり…

Listとかいろいろさわった記録。

List リストの宣言とheadとtail scala> var l = List(1, 2, 3) l: List[Int] = List(1, 2, 3) scala> l.head res0: Int = 1 scala> l.tail res1: List[Int] = List(2, 3)headとtailはSchemeのcarとcdrに相当するっぽいな。 ついでにいうと、consも使える。 c…

getElementById()でname属性が検索される?

getElementById()でname属性を検索してエレメントを取得できるという話を聞いた。 いや、絶対に推奨されている使い方ではないだろう。 そもそもIDはページ内でユニークだからgetElementById()はエレメントを返して、 複数設定できるname属性用にArrayオブジ…

Pythonにはarrayもあるらしい。

昨日の記事、に対して、 id:bonlifeさんから、ツッコミをいただいた。ありがとうございますm(_ _)mPythonのList([])はArrayと同一とばかり思っていました、、、 Arrayに関してはarrayモジュールがあるんですね。 知らなかった〜。 そうなると、arrayって変…

for文になれるためにいろいろ試す

for文について PythonはJavaScriptのようなインデックスでループさせるような for文はなく、for in でしかない。 JavaScriptで書くと var array = new Array('A', 'B', 'C'); for(var i = 0; i < array.length; i++){ alert(i);//A B Cと出力される } ってい…

lambda式は

Pythonのlambda式は、勝手にJavaScriptの 匿名関数とイコールだと思っていたけど、 ずいぶんと違っていて、単一の式しか使えないらしい。 var f = function(x, y){if(x > y){return x;}else{return y;}}; f(3, 4); なんてのが、 f = (lambda x, y : if x > y…

eval()は悪か?

文字列をJavaScriptコードとして実行するeval()。 とても便利だけど、考えもなしに使うと、セキュリティホールにもなりかねない。 だから安易に使うものじゃないと思う。 考えに考え抜いてもう使うしかないような切り札とすべき。 引数で渡された名前を持つ…

Google Gadgetを作ってみよー

今日は、JavaScript Day! と勝手に決め、前々から気になっていた Google Gadgetの記事が出ていたので触発された。 ちょっといじってみよ。 はじめに builderの『5分で学ぶGoogle Gadget開発』を 読む。ふむふむ。 作るのはxmlベース。Contentの中にJavaScrip…