簡體   English   中英

Scala相當於Python的“in”運算符集合?

[英]Scala equivalent of Python's “in” operator for sets?

在Scala中,可以使用“Contains”檢查項目是否是Set的成員:

object Main extends App {
    val the_set = Set(1, 2, 3, 4)
    if( the_set contains 3 ) println("The set contains 3!")
}

但是,我想做一個類似的比較,但是首先是項目,最后是設置(我知道一個小的風格點)。 我有一些Python的背景,所以我希望運算符的Python 有一些東西:

the_set = set([1, 2, 3, 4])
if 3 in the_set: print "The set contains 3!"

在Scala有什么辦法嗎? 如果你很好奇,我想要這樣做的原因是編寫一個簡潔的if語句,將一個值與我構建的long Set進行比較。 同時,我希望項目首先出現,以便代碼更易於閱讀和理解。

謝謝!

以下是如何執行此操作的一個示例:

scala> implicit class InOperation[T](v: T) extends AnyVal { def in(s: Set[T]) = { s contains v } }
defined class InOperation

scala> val x = Set(1,2,3)
x: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> 2 in x
res0: Boolean = true

它使用隱式類添加in方法(這需要Set[T]以任意類型T並檢查物體是否是在該組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM