gpt4 book ai didi

scala - 在Scala中,如何通过一对键值在CSV中找到一个elemein?

转载 作者:行者123 更新时间:2023-12-04 18:52:47 24 4
gpt4 key购买 nike

例如,来自以下文件:

姓名、姓氏、电子邮件
约翰,史密斯,john.smith@hotmail.com
南希,史密斯,nancy.smith@gmail.com
Jane,Doe,jane.doe@aol.com
John,Doe,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" )

关于scala - 在Scala中,如何通过一对键值在CSV中找到一个elemein?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com