PHPでarray_mergeという関数があってなかなか便利というか、連想配列で重複しているキーがあるならその要素は上書きされるという約束になっています。

2つ引数で連想配列を指定して先に指定した方に後のをマージするということで、この場合前述のように重複したキーがあるならば後の要素で前のを上書きすることになります。

こいつをScalaでやろうとすると以下のようになります。

まあ++メソッド(Scalaには演算子はありません)一発なんですよね。

この辺は書き方の問題に過ぎませんがね。

 

ただいま、いろいろScalaであんなことこんなことを自分でするのはもちろんなのですが、JASIPAの皆さんとかJASIPAの皆さんでない皆さんにもScalaにチャレンジして欲しい!と思いましていろいろ算段しております。

Scalaアピールを行うときにいつもお話しすることとしましては、採用例としてはTwitterが筆頭格、なによりも有名な「バルス」で有名なツイートの殺到にも耐えている(運用面での対策はあると思いますが)のはご存じだと思いますが、これがまず最初ですね。

それから最近ではチャットワークさんが採用した、という話をどんどん吹き込んでいる最中なのです。

一方で、純粋にScalaの洗練されているところという点で経験から話をするとすれば、まず筆頭に上がるのがタイトルにもあるとおり「immutable」という概念を使いこなせると非常にコードがスッキリするというコトなのです。

一言で言えば、変数というモノがアリながら1回値を代入したら再度代入することを許さないで変数を運用することになります。これは最初は実感がどうにも湧かないと思うのですが…

その辺の詳しい説明をしようかと思っていたら、「チャットワークがScalaを採用する理由、これからのチャレンジ。」にて加藤潤一氏がその説明をズバリされているので、もはやそれを読んで頂くのが良いでしょう。

URLを紹介したので、書くことが無くなりました。。

最後になりますが、加藤氏の説明をもう少し噛み砕いてお話しできるように考えてみるのを私としては宿題にしたいと思います。いずれScala概論セミナーをまたやりますので、そのときにでもお話しすることにしましょう。

 

“[]”で囲われた文字列だけ抜き出したいな〜という処理があったので、Scalaで書いてみました。この手のってたぶんPerlとかRubyとかで書くのが王道なんでしょうけど、あいにく私はPerlもRubyもどっちも好きじゃ無いんですよ。

やりたいことの例としては、

[xxx][yyy]…………

と言った文字列の時に、「xxx」、「yyy」だけ抜き出したいと言うことですねっ。

実質的には1行で済んでますね。Javaだとこうはいかないでしょう。これでもScalaのパーサーコンピネーター、使っております。

パースの結果はリストで得られております。

どうすか、Scala使ってみたくなりましたん?