映射Scala元组示例

时间:2014-06-04 10:59:05

标签: scala

在以下示例中,l1和l2是整数列表,我想知道为什么会产生错误?

l1.zip(l2).map(_ => { if(_._1 > _._2) 1 else 2 } )

它抱怨它错过了扩展功能的参数类型。为什么这里不允许使用下划线?

2 个答案:

答案 0 :(得分:6)

每个人_都会扩展到预期的输入。 nth _被解释为 nth 参数。你会发现这个

l1.zip(l2).map(x => { if(x._1 > x._2) 1 else 2 } )

相反。或使用模式匹配

l1.zip(l2).map{case (x1,x2) => if(x1 > x2) 1 else 2}

(thx to Kigyo

答案 1 :(得分:1)

基于理解的方法绕过了这里的核心问题,

for ( (a,b) <- l1 zip l2 ) yield { if (a > b) 1 else 2 }

for { (a,b) <- l1 zip l2 
       v = if (a > b) 1 else 2 
    } yield v