Scala 方法在满足谓词后返回值

Scala 方法在满足谓词后返回值,scala,Scala,要将所有内容匹配到我使用的条件,请执行以下操作: val c = "this is a test".split(" ").toList//> c : List[String] = List(this, is, a, test) c.takeWhile({x => !x.equals("is")}) //> res0: List[String] = List(this) 有没有一种方法与takeWhile类似,只是在谓词被满足后它会接受所有内容? 所以类似于c.

要将所有内容匹配到我使用的条件,请执行以下操作:

val c = "this is a test".split(" ").toList//> c  : List[String] = List(this, is, a, test)

c.takeWhile({x => !x.equals("is")})       //> res0: List[String] = List(this)
有没有一种方法与
takeWhile
类似,只是在谓词被满足后它会接受所有内容?
所以类似于
c.takeAfter({x=>x.equals(“is”)})
返回
List(“a”,“test”)

您可以使用
dropWhile

scala>   c.dropWhile(_ != "is")
res4: List[String] = List(is, a, test)

这将删除所有元素,直到它命中谓词。请注意,谓词字符串包含在内,因此您需要检查列表是否为空,如果不是尾部。

您可以使用
dropWhile

scala>   c.dropWhile(_ != "is")
res4: List[String] = List(is, a, test)

这将删除所有元素,直到它命中谓词。请注意,谓词字符串被包括在内,因此您需要检查列表是否为空,如果不是尾部。

考虑
span
,它将列表一分为二,将谓词保留到第一个无效项,例如

val (l,r) = c.span( _ != "is" )
哪一个

l: List(this)
r: List(is, a, test)

例如,考虑
span
,它将列表一分为二,将谓词保留到第一个无效项

val (l,r) = c.span( _ != "is" )
哪一个

l: List(this)
r: List(is, a, test)

我认为您应该使用:
c.dropWhile(!=“is”).drop(1)
。请注意,
tail
是一个局部函数,即将抛出一个空列表:
list[String](“adsfasdf”).dropWhile(!=“is”).tail
导致抛出异常:
java.lang.UnsupportedOperationException
。与
drop
不同的是:
scala>List[String](“asdfasdf”).dropWhile(!=“is”).drop(1)res16:List[String]=List()
同意,我还写道,在调用
tail
之前,必须检查列表是否为空,但
drop(1)
(我没有想到)当然是一个更合适的选择。我认为您应该使用:
c.dropWhile(!=“is”).drop(1)
。请注意,
tail
是一个局部函数,即将抛出一个空列表:
list[String](“adsfasdf”).dropWhile(!=“is”).tail
导致抛出异常:
java.lang.UnsupportedOperationException
。与
drop
不同的是:
scala>List[String](“asdfasdf”).dropWhile(!=“is”).drop(1)res16:List[String]=List()
同意,我还写道,在调用
tail
之前,必须检查列表是否为空,但
drop(1)
(我没有想到)肯定是一个更合适的选择。