如何从枚举Scala3中随机选择元素

tjrkku2a  于 2023-01-05  发布在  Scala
关注(0)|答案(2)|浏览(158)

我的问题很简单。我有以下几点:

enum Colors:
  case Blue, Red, Green

如何从这个枚举中选择一个随机元素?我尝试了this question中的解决方案,但没有成功。

tv6aics1

tv6aics11#

可以使用Random.nextInt生成随机枚举值的索引。
这避免了混洗Array的值,并且仅生成一个随机数。

import scala.util.Random

enum Colors:
  case Blue, Red, Green

object Colors:
  private final val colors = Colors.values

  def random: Colors = colors(Random.nextInt(colors.size))

@main def run: Unit =
  println(Colors.random)
ecr0jaav

ecr0jaav2#

enum Colors:
  case Blue, Red, Green

@main def run: Unit = 
  import scala.util.Random

  val mycolor = Colors.values

  println(Random.shuffle(mycolor).head)

相关问题