【发布时间】:2010-10-12 23:37:11
【问题描述】:
我看到了下面的代码:
Map(1 -> "one", 2 -> "two") map _._1
这返回一个Iterable[Int],但是如果我不想对map做任何事情,该怎么做呢?
我想做类似下面的事情,但是下面的代码无法编译,我知道因为它是一个对象实例而不是一个函数,但是如何创建一个函数来执行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").toIterable还不够吗? -
很抱歉让您感到困惑,这只是我脑海中的一个问题,而不是一个真正的问题。没有理由这样做,只是想知道如何。
标签: scala function casting placeholder