【问题标题】:Idiomatic way to implement containsAny for Scala SeqLike为 Scala SeqLike 实现 containsAny 的惯用方式
【发布时间】:2013-03-23 15:20:00
【问题描述】:

Scala 的SeqLike 实现了一个方法contains。如何干净利落地实现containsAny 功能?

假设我想查明字符串string 是否包含blacklist 中的任何黑名单字符:

val blacklist = List("(", ")", "[", "]", "{", "}", "<", ">")
string containsAny blacklist

如何干净利落地实现第二行?

到目前为止,我的版本如下所示:

(blacklist.view map string.contains) contains true

【问题讨论】:

    标签: scala


    【解决方案1】:

    最好的办法是设置黑名单。

    val blacklist = "()[]{}<>".toSet
    

    现在您可以使用exists 来查找您的字符串中是否存在这些字符。由于Set[T] 扩展了T =&gt; Boolean,因此您可以直接使用集合,而不必编写显式条件。

    scala> "I like fish (but not herring)" exists blacklist
    res1: Boolean = true
    
    scala> "I like fish, especially salmon!" exists blacklist
    res2: Boolean = false
    

    (注意:注意字符串"I am a string"和字符'c'之间的区别。单字符的字符串是字符串,不是字符。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 2011-06-16
      • 2012-08-11
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      相关资源
      最近更新 更多