ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Scala2.9で追加されたコレクションのメソッド

2011-09-18 22:14:08 | PG(Scala)

昨日新PCを買ったが、届くのは今度の金曜日なので、それまでプログラミングは控えるw

というわけで、前からやりたいと思っていた、Scala2.9で追加された“コレクションメソッド”を確かめてみた。
基本的に並列コレクション関連のメソッドが増えているだけ…かと思っていたら、地味に色々増えているようだ。確認して良かった(笑)
並列コレクションに関して「Gen」で始まるトレイトが増えているけど、これは直接使うわけでもないだろうから、まぁいいか。

(ついでにこの辺りのウェブページの構成を変えた。
具体的には、メソッド一覧の新しいページを作った。(コレクション関連の)トップページに置いておくには量がありすぎる^^;
(なので、他ページからの各メソッドへのリンクがずれてるかも(爆))
それと、並列コレクションのページはScala2.9の正式リリース前に試したものを書いていたので、修正した。メソッド名や方式がずいぶん変わってたし)

あと、REPLのScala2.9のコマンドも確認。
「:type」は地味に便利。「:sh」の使い方が変わったのはいいとして、「:implicits」がPredefのしか表示されないんだけど、これで正しいんだろうか…?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

うかつなパッケージ名

2011-09-17 00:50:46 | PG(Scala)

AfwHSで、Javaから呼ばれる為のクラスを~.afwhs.javaというパッケージに置いていた。
でも使う側で「import ~.afwhs._」としたら、「java」から始まるパッケージのインポート「import java.io._」がエラーになってしまったらしい

Scalaではimportで相対パスのような指定が出来るけど、「_」でインポートしたら、どんなのが入るか使う人には分からないもんなー><

javaパッケージと一緒にインポートするのは試してなかったので気付かなかったけど、これはトラップだなぁ。「scala」パッケージと競合するのは経験してたから気をつけていたけれど、「java」もか…。
他にも色々あるようなので、気をつけないとなぁ(苦笑)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scalaコンパイラプラグインによるソース変換

2011-09-11 21:33:17 | PG(Scala)

Scalaコンパイラプラグインの使い方がようやく分かってきた。

ソースの構文解析木を見るのはだいぶ前に試していた(試していたことすら忘れかけていた(爆))けれど、それは意外と簡単だった。
Scalaお得意のパターンマッチが炸裂・大活躍(笑)

難物だったのはソースコード変換
構文解析木のTreeだけ変えればいいのかと思ったら、Symbolも一緒に変えないといけない。しかもTreeの中にSymbolを保持していたり、いつの間にかContextでスコープを保持していたり…。分かってみれば対処法はあったけれど、分かるまでが大変だった(苦笑)
なにせサンプルが少なくて。検索してみると見つかるのが掲示板で、しかも質問は載っていても回答が付いていなかったり理解できなかったり(英語だし)。

しかし新しいTreeを作る為のTreeDSLは面白い。これぞDSLだな。Scalaの構文解析木を作る為のDSL。Scalaの面目躍如(笑)

何はともあれ、クラスフィールドメソッドを追加することは出来た。(やり方が確立してしまえば、意外と簡単)
これで何か自動生成できるかな~?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scalaのソースファイル分割

2011-08-26 01:23:45 | PG(Scala)

Scalaのちょいネタ。
Scalaでクラス定義のソースファイルの分割っぽいものが出来た。

まぁ、ただ単にクラス内のメソッドを別のトレイトに移して、ミックスインしただけのことなんだけど。そもそもトレイトは実装を持てるのでそういう目的に使うものだろうし。
ポイントは、トレイトから元のクラス内のメンバーにアクセスできるってことだね。自分型アノテーションまじ便利!

これを試してみようと思ったのは、クラス内の一部のメソッドだけオーバーロードを作りまくって数が多くなるので、ソース内の見通しが悪くなるから別ファイルに切り出したかったという理由。
これなら切り出したソースファイルを自作ツールで自動生成することもできるようになるので、良さそう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Spark saveAsTextFile(Windows)

2011-07-26 22:46:26 | PG(Scala)

Windows上で動かしたSparksaveAsTextFile()が使えなかった件、解決。

saveAsTextFile()を呼び出すと、(Sparkはファイル入出力にHDFSのAPIを使用しているので、その内部で)chmodを呼び出す。
Windowsにはchmodなんて無いから落ちる。

そこで、Cygwinのchmodを呼び出すようにしてやればよい
(以前、HadoopのMapReduceを直接Eclipseから呼び出すようにするときにやった方法なのに、うっかり忘れてたorz)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする