[Scala]RubyでいうFile.joinに似た事を実装してみる
Scalaでパスを生成する時
素直にStringのジョインにする
[scala]"/tmp" + “/" + “data"[/scala]
とか
[scala]"/" + (“" /: Array(“tmp", “data")) (_ + “/" + ?)[/scala]
とか毎回やるのが面倒になったので、
Array(“tmp", “data") createPath
という感じで/tmp/data
という文字列を作れるようにしてみる。
[scala]trait createpathtrait[T];
implicit def createpathimp(a: Array[String]) = new createpathtrait[Array[String]]{def createPath = {(“" /: a)(_ + “/" + _)}}[/scala]
これをどこかグローバルに呼べるファイルに入れておけば
[scala]Array(“tmp", “data") createPath[/scala]
で
[scala]res1: java.lang.String = /tmp/data[/scala]
が帰ってくるようになる
ディスカッション
コメント一覧
先頭の “/” はつきませんが、Array(“tmp”, “data”).mkString(“/”) で “tmp/data” にできたりします。
すでにご存知であれば失礼しました。
コメントありがとうございます。
一応その方法も分かってはいたのですが、フルパスを一発で生成したいという事でやってみました。
また、まだ改良の余地がありまして
Array(“/tmp”, “data”) createPathなどとやった場合に/が二つになってしまうので
もしかしたら、とおりすがりさんのコメントにあります、mkStringの方法で、先頭の/を付ける付けないをハンドリングした方が
良いのかも?とも思います。。