Friday, November 12, 2010

Scalaでいい感じにtap

最近のRubyにある、超便利メソッドtapの使い方のメモ。
Scalaでimplicit conversionを使ったtapの実装はScala で tap メソッドを使う - Rainy Day Codingsに書いてある。

メソッドチェーンを切らずにtapしてprintlnとかよくやるけど、今日はそれ以外の使い方を学んだ。うはは。

tapを使わない場合は気の毒で目も当てられない

  1. import java.util.Properties  
  2. def loadProperties(path: String): Properties = {  
  3.   val p = new Properties()  
  4.   p.load(new FileInputStream(new File(path).getAbsolutePath))  
  5.   p  
  6. }  
オブジェクト作って呼び出し元に返したいが、
初期化メソッドの戻り値がthisじゃないからローカル変数に一度入れてからreturnしなきゃならんっていう古いjavaライブラリによくあるケース。

tapを使うとローカル変数がいらなくなる

  1. import java.util.Properties  
  2. def loadProperties(path: String): Properties = {  
  3.   new Properties().tap( _.load(new FileInputStream(new File(path).getAbsolutePath)))  
  4. }  

いいねぇ!

No comments:

Post a Comment