PythonのプログラミングはJavaScriptに似ている。文法はまるで似ていないが。発想が似てる。
配列の動的インクリメント
Javascriptのばあい
var hoge; hoge[hoge.length] = "test1"; hoge[hoge.length] = "test2"; hoge[hoge.length] = "test3"; //hoge = { 0: "test1", 2:"test2", 3:"test3" }
Pythonの場合。
##配列のマージを利用する hoge[len(hoge):] = ["test1"] hoge[len(hoge):] = ["test2"] hoge[len(hoge):] = ["test3"] ##hoge = { 0: "test1", 2:"test2", 3:"test3" } ##Appendメソッドを使う hoge.append( "test1" ) hoge.append( "test2" ) hoge.append( "test3" ) ##hoge = { 0: "test1", 2:"test2", 3:"test3" }
もちろん、append()関数を使ってもいい。ただ、JavaScriptでも配列にappendすることよりも言語構造で処理することが多いので、こっちの書式がよく使われるのかな?。PHPやPerlでもappend()しないなぁ。
##注意) 配列のマージはappendより処理が重いよ。マニュアルによると、append推奨らしい。
ちなみにPHPの場合はとっても楽ちん
<?php hoge[]= "test1"; hoge[]= "test2"; hoge[]= "test3"; //hoge = a:3:{i:0;s:5:"test1";i:1;s:5:"test2";i:2;s:5:"test3";}
PHPだと「appendしる」みたいなことは書いていなく、これが自然な記述ってこと。楽だねぇ。オブジェクトがIteratorインタフェース実装してればどこで使っても問題ないみたい。
Javaだと、Collectionインタフェース実装したクラスにキャストして・・・それから・・・云々・・死ねる。Eclipseが発展してきた理由がわかる。補完無しだと腱鞘炎だ。
PHPのserialize関数はJSONっぽい文字列を返してくれるが、若干仕様が異なるのでそのままJavaScriptでevalは出来ない。まぁJSONを返すパッケージがあるのでそれを使えばいいさ。