我在这一块的墙上敲我的头。 (仅供参考,我不是一个阶亲,但我就喜欢大的时候)斯卡拉 - 在列表中找到一个特定的元组
比方说,我们有元组名单:
val data = List(('a', List(1, 0)), ('b', List(1, 1)), ('c', List(0)))
名单有这样的签名:
List[(Char, List[Int])]
我的任务是从“data”中的元组中获取“List [Int]”元素,该元素的关键字是,比如说,字母“b”。
换句话说,如果我实现像“findIntList(数据,‘B’)”的方法,那么我期待(1,1)
刚刚完成的图片,我已经尝试列出的结果以下方法。问题是,对于所有的方法(除了方法1,我使用明确的“返回”),我要么收到List[Option]
或List[Any]
对象,我不知道如何从
List[Int]
”信息
方法1:
data.foreach { elem => if (elem._1 == char) return elem._2 }
方法2:
data.find(x=> x._1 == ch)
方法3:
for (elem <- data) yield elem match {case (x, y: List[Bit]) => if (x == char) y}
方法4:
for (x <- data) yield if (x._1 == char) x._2
如果你有'Option(char,List [Bit])',比如你从'data.find'得到的东西,你可以用'.get'得到实际的元组:注意它会抛出如果没有发现任何异常。在这项任务中,我只写了自己的功能,因为高阶列表功能仅在第5周推出。 – 2013-04-25 04:44:17
(https://www.coursera.org/course/progfun) – 2013-04-25 04:49:40
感谢Mark! .get是这里的神奇 – mainas 2013-04-25 05:01:37