基本上,我希望能夠建立一個自定義提取器,而不必在使用它之前將它存儲在變量中。可以使用case語句(或使用提取器的任何其他地方)中的參數來定製提取器嗎?
這不是我如何使用它的真實例子,它更可能用於正則表達式或其他字符串模式(如構造)的情況,但希望它解釋我在尋找什麼:
def someExtractorBuilder(arg:Boolean) = new {
def unapply(s:String):Option[String] = if(arg) Some(s) else None
}
//I would like to be able to use something like this
val {someExtractorBuilder(true)}(result) = "test"
"test" match {case {someExtractorBuilder(true)}(result) => result }
//instead I would have to do this:
val customExtractor = someExtractorBuilder(true)
val customExtractor(result) = "test"
"test" match {case customExtractor(result) => result}
如果只是做一個單獨的定製提取它並沒有太大的差別,但如果你正在構建提取的大名單的case語句,它可以使事情變得更加困難讀通過分離所有的從他們的使用提取器。
我想到的是,答案是否定的,你不能這樣做,但我想我會四處打聽第一:d
你呢,呃,*試試*它? – 2010-03-09 19:04:24
我曾嘗試它,我收到一個語法錯誤: 階> VAL {someExtractorBuilder(真)}(結果)= 「測試」:1:錯誤:簡單圖案 val的非法啓動{someExtractorBuilder(真)} (result)=「test」 ^ –
2010-03-09 19:43:53
你最終想做什麼?可能有更好的方法來做它比製造大量的提取器。 – 2010-03-10 05:24:50