簡體   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