Scala 确保列表仅包含特定值
如何确保列表仅包含一组特定的项目Scala 确保列表仅包含特定值,scala,Scala,如何确保列表仅包含一组特定的项目 List[Int] 确保列表仅包含值10、20或30的函数。 我肯定这是我自己做的,我找不到 福尔 您可以将forall与包含有效或合法元素的集合一起使用,这些元素是您希望在列表中看到的 list.forall(Set(10, 20, 30).contains) //true means list only contains 10, 20, 30 集合就是函数 您不需要使用contains方法作为Set扩展Int=>Boolean。可以像函数一样使用Set
List[Int]
确保列表仅包含值10、20或30的函数。
我肯定这是我自己做的,我找不到 福尔
您可以将forall
与包含有效或合法元素的集合一起使用,这些元素是您希望在列表中看到的
list.forall(Set(10, 20, 30).contains) //true means list only contains 10, 20, 30
集合就是函数
您不需要使用contains
方法作为Set
扩展Int=>Boolean
。可以像函数一样使用Set
list forall Set(10, 20, 30)
滤器
您可以使用过滤器过滤掉不在给定列表中的元素。同样,您可以在Set扩展函数时使用Set as函数
list.filter(Set(10, 20, 30)).nonEmpty //true means list only contains 10, 20 and 30
收集如果你喜欢模式匹配
Collect具有部分功能。如果您喜欢模式匹配,只需使用collect
list.collect {
case 10 => 10
case 20 => 20
case 30 => 30
}.nonEmpty //true means list only contains 10, 20 and 30
Scala REPL
scala> val list = List(10, 20, 30, 40, 50)
list: List[Int] = List(10, 20, 30, 40, 50)
scala> list forall Set(10, 20, 30)
res6: Boolean = false
福尔
您可以将forall
与包含有效或合法元素的集合一起使用,这些元素是您希望在列表中看到的
list.forall(Set(10, 20, 30).contains) //true means list only contains 10, 20, 30
集合就是函数
您不需要使用contains
方法作为Set
扩展Int=>Boolean
。可以像函数一样使用Set
list forall Set(10, 20, 30)
滤器
您可以使用过滤器过滤掉不在给定列表中的元素。同样,您可以在Set扩展函数时使用Set as函数
list.filter(Set(10, 20, 30)).nonEmpty //true means list only contains 10, 20 and 30
收集如果你喜欢模式匹配
Collect具有部分功能。如果您喜欢模式匹配,只需使用collect
list.collect {
case 10 => 10
case 20 => 20
case 30 => 30
}.nonEmpty //true means list only contains 10, 20 and 30
Scala REPL
scala> val list = List(10, 20, 30, 40, 50)
list: List[Int] = List(10, 20, 30, 40, 50)
scala> list forall Set(10, 20, 30)
res6: Boolean = false
如果您只是想确定列表中的所有值是否都是“合法的”,请对所有值使用:
def isLegal(i: Int): Boolean = ??? // e.g. is it 10, 20, or 30
val allLegal = list forall isLegal
val onlyLegalValues = list filter isLegal
如果要精简列表,以便只保留合法值,请使用过滤器:
def isLegal(i: Int): Boolean = ??? // e.g. is it 10, 20, or 30
val allLegal = list forall isLegal
val onlyLegalValues = list filter isLegal
请注意,Set[Int]
算作一个Int=>Boolean
函数,因此您可以使用它来代替isLegal
方法:
val isLegal = Set(10, 20, 30)
val allLegal = list forall isLegal
val onlyLegalValues = list filter isLegal
如果您只是想确定列表中的所有值是否都是“合法的”,请对所有值使用:
def isLegal(i: Int): Boolean = ??? // e.g. is it 10, 20, or 30
val allLegal = list forall isLegal
val onlyLegalValues = list filter isLegal
如果要精简列表,以便只保留合法值,请使用过滤器:
def isLegal(i: Int): Boolean = ??? // e.g. is it 10, 20, or 30
val allLegal = list forall isLegal
val onlyLegalValues = list filter isLegal
请注意,Set[Int]
算作一个Int=>Boolean
函数,因此您可以使用它来代替isLegal
方法:
val isLegal = Set(10, 20, 30)
val allLegal = list forall isLegal
val onlyLegalValues = list filter isLegal
当列表中不包含必需的项目时,您的问题没有指定希望发生什么 如果列表中的所有项目都符合您的条件,则以下内容将返回true,否则返回false:
val ints1: List[Int] = List(1, 2, 3, 4, 5, 6, 7)
val ints2: List[Int] = List(10, 10, 10, 10)
ints1.forall(i => List(10, 20, 30).contains(i)) // false
ints2.forall(i => List(10, 20, 30).contains(i)) // true
以下内容将返回一个列表,其中仅包含符合条件的项目:
val ints1: List[Int] = List(10, 20, 30, 40, 50, 60, 70)
val ints2: List[Int] = List(10, 10, 10)
ints1.filter(i => List(10, 20, 30).contains(i)) // List(10, 20, 30)
ints2.filter(i => List(10, 20, 30).contains(i)) // List(10, 10, 10)
当列表中不包含必需的项目时,您的问题没有指定希望发生什么 如果列表中的所有项目都符合您的条件,则以下内容将返回true,否则返回false:
val ints1: List[Int] = List(1, 2, 3, 4, 5, 6, 7)
val ints2: List[Int] = List(10, 10, 10, 10)
ints1.forall(i => List(10, 20, 30).contains(i)) // false
ints2.forall(i => List(10, 20, 30).contains(i)) // true
以下内容将返回一个列表,其中仅包含符合条件的项目:
val ints1: List[Int] = List(10, 20, 30, 40, 50, 60, 70)
val ints2: List[Int] = List(10, 10, 10)
ints1.filter(i => List(10, 20, 30).contains(i)) // List(10, 20, 30)
ints2.filter(i => List(10, 20, 30).contains(i)) // List(10, 10, 10)
问题是如何验证列表仅包含值
10
、20
和30
。要做到这一点,我们需要多做一步,编写类似于list.filterNot(Set(10,20,30)).contains()).isEmpty
,以验证该集中不包含的元素列表是否为空。问题是如何验证该列表仅包含值10
,20
,和30
。要做到这一点,我们需要做一个额外的步骤,编写一些类似于<代码>列表的文件。FieltNoT(set(10, 20, 30)。包含(i))。ISWORL/<代码>以验证未包含在<<代码> set <代码>中的元素的列表是空的。如果您认为问题已经解决,请考虑接受答案。如果没有,请向帮助将答案提高到可接受水平的人员发表评论。它对每个人都有帮助。您想确保您只能将某些项目添加到列表中吗?列表存在时只能包含某些项,或者检查给定列表在给定时间点是否包含某些项。3个选项有3个不同的答案。如果你认为你的问题已经解决了,请考虑接受一个答案。如果没有,请向帮助将答案提高到可接受水平的人员发表评论。它对每个人都有帮助。您想确保您只能将某些项目添加到列表中吗?列表存在时只能包含某些项,或者检查给定列表在给定时间点是否包含某些项。3个选项,3个不同的答案。