2
A
回答
6
不需要tailOption
。如果你想要一个功能像tail
一样行事。但在空集合上使用时返回空集合,则可以使用drop(1)
。我经常用这个当我想妥善处理空集创建成对列表时:
s zip s.drop(1)
如果您想对空收集和Some(tail)
非空单None
,你可以使用:
s.headOption.map(_ => s.tail)
或者(如果你不介意的异常被抛出和捕获,这可能是有点慢):
Try {s.tail}.toOption
我很难想象一个合理的使用情况旧约她的选择,虽然。
+0
so'def tailOption = drop(1)and Then headOption'或stg like that – jhegedus
0
我从来没有这样做过,这是一种有趣的为什么tailOption不属于标准库的一部分。我不知道为什么它不在那里,但我们可以通过捕获空列表尾部引发的错误来扩展功能。
def getOption[A](a: => A) = {
try{ Some(a) }
catch { case e: Exception => None }
}
getOption(List(1,2,3).tail) // Some(3)
getOption(Nil.tail) // None
相关问题
- 1. 为什么Scala没有decltype?
- 2. 为什么Scala stdlib中没有ARM?
- 3. 为什么Scala List没有订购?
- 4. 为什么Scala的BigDecimal没有ZERO?
- 5. 为什么scala没有内置的PartialFunctionN?
- 6. 在Scala中,为什么没有`Future.onComplete`的实现?
- 7. 为什么scala在Catch中没有完成功能
- 8. 为什么Scala 2.8+中没有“价值中断”?
- 9. 为什么钻营和uncurrying Scala中没有隐含
- 10. 为什么Scala标准库中的Numeric没有`maxValue`?
- 11. 为什么Scala列表中没有大小字段?
- 12. 有什么区别)Scala中
- 13. scala-android.jar中有什么?
- 14. 为什么Iterator在Scala 2.8中有一个包含方法但Iterable没有?
- 15. 为什么List中的空元素在Scala中没有被默认值取代?
- 16. 为什么在scala中不识别proc?
- 17. monad为什么不在scala中编写
- 18. 在scala中没有右操作数的意思是什么?
- 19. 为什么scala的并行序列没有包含方法?
- 20. 为什么Scala的Either.RightProjection#过滤器没有返回Either?
- 21. 为什么scala Map没有实现无法应用?
- 22. 为什么Scala对此没有多少热情?
- 23. 为什么Scala没有从特质识别方法
- 24. 为什么scala反射报告某些类没有声明?
- 25. 为什么CFStringEncodings在Swift中没有UTF8?
- 26. 为什么在C++中没有static_if 11
- 27. 为什么在objC中没有* ForKeyPath?
- 28. 为什么在std.parallel中没有'forall'?
- 29. 为什么没有在Java中
- 30. 为什么LinkedList在java中没有initialCapacity?
选项的尾部是什么? – Lee