标签: scala
下面是我编写的用于生成随机字符串(用于文件名)的代码:
Animal
永远不应该抛出异常Animal,但是因为我需要返回类型String,所以需要它。什么是Scala编译器不抱怨我抛出RuntimeException而不是返回String?
是否存在重写上述代码的功能等效(无变量)?
答案 0 :(得分:2)
在Scala中抛出异常的结果类型是Nothing,它是底部类型,因此可以在需要String的地方使用。
Nothing
String
UUID冲突的可能性非常小(请参阅此question和wikipedia),但如果您确实想要检查更具功能性的文件名冲突,可以使用尾递归功能
def randomFileName(existing: List[String]) : String = { val uuid = java.util.UUID.randomUUID.toString if (existing.contains(uuid)) randomFileName(existing) else uuid }