繁体   English   中英

在Scala中生成随机object

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM