2013-08-23 78 views
1

我有一個數據對象:如何將數據綁定對象

case class Id(val value: String) extends AnyVal { 
    def bind[A](f: ((String) => A)): A = { 
    f(value) 
    } 
} 

我想ID綁定到String.format的第一個參數:

id.bind(template.format) 

但我得到的錯誤type mismatch: Seq[Any] => String => String

我相信這是因爲template.format可以採取可變數量的參數。

有沒有一種方法,我可以做一個很好的可重用的綁定功能?

編輯:(我不想因爲我想實現一個訴說不問策略泄漏Id的VAL)如果你在你的電話綁定使用lambda

回答

0

,那麼一切都應該是精細:

id.bind(s => template.format(s)) 

或者,你可以改變你的綁定功能,接受Seq[Any]

def bind[A](f: ((Seq[Any]) => A)): A = { 
    f(Seq(value)) 
} 

或者:

def bind[A](f: (String*) => A): A = { 
    f(value) 
} 

id.bind(template.format) // Works!!!