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)
(我没有想到)肯定是一个更合适的选择。