我看到下面的代碼:如何限制匿名函數的邊界?
Map(1 -> "one", 2 -> "two") map _._1
這個返回可迭代[INT],但如果我什麼都不做地圖,怎麼辦呢?
我想要做類似下面,但是下面的代碼無法編譯,我知道,因爲它的對象實例而不是功能,而是如何建立一個函數來做到x => x
和使用佔位符:
Map(1 -> "one") map (_) // map (Int, String) to (Int, String) by nothing change
// I test some other way, but all can't compile
如何做到這一點?
修訂
對不起,混淆激情的人。我想知道爲什麼map (_) != map (x => x)
,編譯器轉換這個代碼(x$1) => Map(1.$minus$greater("one")).map(x$1)
爲什麼不Map('a'.$minus$greater(1)).map((x$1) => x$1)
,並確實存在有一個方法可以使用_
使此代碼?
我用下面的代碼,以幫助編譯器推斷出_
類型:
Map(1 -> "one") map (_:((Int, String))=>(Int, String))
// but it return (((Int, String)) => (Int, String)) => scala.collection.immutable.Map[Int,String] = <function1>
這似乎解析器不知道放在哪裏匿名函數的開始。所以我的新問題是「如何幫助解析器限制匿名函數的邊界?」
爲什麼你需要做到這一點使用'map'? 'Map(1 - >「one」,2 - >「two」).Iterable'不足夠嗎? – 2010-10-12 10:19:55
對不起迷惑你,這只是在我的頭上,而不是一個真正的問題的問題。沒有理由這樣做,只想知道如何。 – 2010-10-12 12:42:57