Ste*_*fen 1 scala pattern-matching
给出一个单词对列表
val terms = ("word1a", "word1b") :: ("word2a", "word2b") :: ... :: Nil
Run Code Online (Sandbox Code Playgroud)
Scala中最优雅的方法是测试文本中是否至少有一对出现?当测试到达第一场比赛时,测试应该尽快终止.你会如何解决这个问题?
编辑:更确切地说,我想知道一对中的两个单词是否出现在文本中的某个位置(不一定按顺序).如果列表中的一个对的情况如此,则该方法应该返回true.没有必要返回匹配的对,如果多于一对匹配则不重要.
scala> val text = Set("blah1", "word2b", "blah2", "word2a")
text: scala.collection.immutable.Set[java.lang.String] = Set(blah1, word2b, blah2)
scala> terms.exists{case (a,b) => text(a) && text(b)}
res12: Boolean = true
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,使用集合来表示文本中的标记可以使查找contains更加高效.您不希望使用像List这样的顺序.
编辑2:更新了要求的说明!
编辑3:改contains到apply在注释每建议
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |