使用功能原则生成随机字符串

时间:2015-07-18 09:59:44

标签: scala

下面是我编写的用于生成随机字符串(用于文件名)的代码:

Animal

永远不应该抛出异常Animal,但是因为我需要返回类型String,所以需要它。什么是Scala编译器不抱怨我抛出RuntimeException而不是返回String?

是否存在重写上述代码的功能等效(无变量)?

1 个答案:

答案 0 :(得分:2)

在Scala中抛出异常的结果类型是Nothing,它是底部类型,因此可以在需要String的地方使用。

UUID冲突的可能性非常小(请参阅此questionwikipedia),但如果您确实想要检查更具功能性的文件名冲突,可以使用尾递归功能

def randomFileName(existing: List[String]) : String = {
  val uuid = java.util.UUID.randomUUID.toString
  if (existing.contains(uuid)) randomFileName(existing)
  else uuid
}