在Scala中,如何通过一对键值找到CSV中的elemein?
发布时间:2020-12-16 18:17:41 所属栏目:安全 来源:网络整理
导读:例如,从以下文件: Name,Surname,E-mailJohn,Smith,john.smith@hotmail.comNancy,nancy.smith@gmail.comJane,Doe,jane.doe@aol.comJohn,john.doe@yahoo.com 我如何获得John Doe的电子邮件地址? 我现在使用以下代码,但现在只能指定一个关键字段: val src =
例如,从以下文件:
Name,Surname,E-mail John,Smith,john.smith@hotmail.com Nancy,nancy.smith@gmail.com Jane,Doe,jane.doe@aol.com John,john.doe@yahoo.com 我如何获得John Doe的电子邮件地址? 我现在使用以下代码,但现在只能指定一个关键字段: val src = Source.fromFile(file) val iter = src.getLines().drop(1).map(_.split(",")) var quote = "" iter.find( _(1) == "Doe" ) foreach (a => println(a(2))) src.close() 我试过写“iter.find(_(0)==”John“&& _(1)==”Doe“)”,但是这引起了一个错误,说只有一个参数是预期的(封闭了条件成额外的括号对没有帮助). 解决方法
作为lambda参数的占位符的下划线不能像您想象的那样工作.
a => println(a) // is equivalent to println(_) (a,b) => a + b // is equivalent to _ + _ a => a + a // is not equivalent to _ + _ 也就是说,第一个下划线表示第一个参数,第二个下划线表示第二个参数,依此类推.这就是你所看到的错误的原因 – 你使用了两个下划线,但只有一个参数.修复是使用显式版本: iter.find( a=> a(0) == "John" && a(1) == "Doe" ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |