[英]Generate random object in Scala
我是scala的初学者,我尝试在Scala制作活动水果销售并将结果存储在json文件中。 为此,我尝试生成随机 object(具有名称和来源的水果),但我遇到了困难,我不知道如何使用随机 class 来生成它。
这是我的代码:
import scala.util.Random
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder
.appName("FruitSales")
.getOrCreate()
object FruitSales extends Enumeration {
object Fruit extends Enumeration {
type Fruit= Value
val apple, banana , orange, strawberry = Value
}
object Origin extends Enumeration {
type Origin = Value
val USA, espagne, france, sweden, mexico= Value
}
class Fruits(Fruit: String, Origin: String) extends Enumeration {}
def producing_events (fruit: Fruits): Fruits = {
val rand = new scala.util.Random
rand.nextString(200)
}
val df = spark.read.json("/tmp/file.json")
df.show(false)
}
我建议在这种情况下避免使用枚举,这不是最佳做法。 这是我的方法,并不完美,但会为您提供一个总体思路。 下面的代码生成 10 个随机对象,如果你真的想要,你甚至可以在 ScalaCheck 中自定义概率分布,但我想这对你的情况来说太多了。
import org.scalacheck._
final case class Fruit(name: String, origin: String)
val originGen = Gen.oneOf( List("apple", "banana", "orange", "strawberry") )
val fruitNameGen = Gen.oneOf( List("USA", "Espagne", "France", "Sweden", "Mexico") )
val fruits = {
for {
_ <- 0 to 10
origin <- originGen.sample.take(1)
fruit <- fruitNameGen.sample.take(1)
} yield Fruit(fruit, origin)
}
println( fruits )
也可以在object代上添加一些限制和依赖。 只需挖掘文档以获取更多详细信息。
https://github.com/typelevel/scalacheck/blob/master/doc/UserGuide.md
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.