Arrayのconcatメソッドが何気に便利だった
え、今さら?感満載ですけど。
配列を結合するメソッドという頭でいましたが、要素を追加して、ついでに要素追加反映後の配列コピーを返すメソッドと考えると結構便利な気がします。
Arrayオブジェクトのメソッドは、sortとかreverseとかmapとかfilterとかのように、配列を返すメソッドが多く、メソッドチェーンでつなげて配列を処理していくのが結構快適だったんですけど、pushは配列を返してくれないので、pushした後の配列に何か処理を施す際には、メソッドチェーンで処理をつなげていくことはできません。
concatはその代わりに使えます。
サンプルコード
メソッドチェーンの例ではないけど、multiply_str関数のreturnの箇所では、pushを使うと1文余計に必要ですが、concatを使うとreturnの箇所が1文で書けます。
あと、配列をconcatで追加したい場合は、[1,2,3].concat([ [4,5,6] ])
みたいな感じで、配列の配列を引数に代入すれば実行できます。
追記2
@valvallow さんに、よりGaucheらしい書き方教えてもらいました。(ところどころスペース消えちゃってるので注意)
@taiju 短く書くならこんな感じでも >(define(google num)(string-append"g"(apply string-append(make-list num "o"))"gle"))
2011-11-03 22:00:07 via twicli to @taiju
make-list関数を使えば、multiply_strを自作する必要ないですね。
make-list関数のJavaScript実装。
for文速すぎワロタ。
そして、いつの間にかSchemeの記事になってる...