Articles of Scala

Come modellare la corrispondenza su un tipo generico in Scala?

Supponiamo di avere un Container class generica: case class Container[+A](value: A) Vogliamo quindi associare un Container un Container con un Double e un Container di Any : val double = Container(3.3) var container: Container[Any] = double Per fare questo, normalmente scriveremmo: container match { case c: Container[String] => println(c.value.toUpperCase) case c: Container[Double] => println(math.sqrt(c.value)) case […]

Come definire il partizionatore personalizzato per RDD Spark di partizione di dimensioni uguali in cui ogni partizione ha un numero uguale di elementi?

Sono nuovo di Spark. Ho un grande insieme di elementi [RDD] e voglio dividerlo in due partizioni esattamente uguali che mantengono l’ordine degli elementi. Ho provato ad usare RangePartitioner come var data = partitionedFile.partitionBy(new RangePartitioner(2, partitionedFile)) Questo non dà un risultato soddisfacente perché divide l’ordine degli elementi in modo approssimativo ma non esattamente uguale. Ad […]

Cosa significa param: _ * in Scala?

Essendo nuovo di Scala (2.9.1), ho un List[Event] e vorrei copiarlo in un Queue[Event] , ma la seguente Sintassi produce invece una Queue[List[Event]] : val eventQueue = Queue(events) Per qualche ragione, i seguenti lavori: val eventQueue = Queue(events : _*) Ma mi piacerebbe capire cosa fa e perché funziona? Ho già visto la firma della […]

Come cancellare Future in Scala?

Java Future ha il metodo cancel , che può interrompere il thread, che esegue l’attività Future . Ad esempio, se avvolgo una chiamata di blocco interrompibile in un Java Future posso interromperla in seguito. Scala Future non fornisce alcun metodo di cancel . Supponiamo che io completi una chiamata di blocco interrompibile in un Scala […]

Mixin dinamico in Scala – è ansible?

Quello che mi piacerebbe ottenere è avere una corretta implementazione per def dynamix[A, B](a: A): A with B Posso sapere che cosa è B, ma non so cosa sia A (ma se B ha un self-type allora potrei aggiungere alcuni vincoli ad A). Il compilatore di scala è soddisfatto della suddetta firma, ma non sono […]

“Ops postfix” di Scala

Ho cercato per una mezz’ora, e ancora non riesco a capirlo. In SIP: Modularizing Language Features ci sono un certo numero di funzionalità che richiedono un esplicito “abilitazione” in Scala 2.10 ( import language.feature ). Tra di loro c’è postfixOps , al quale non riesco a trovare un riferimento da nessuna parte. Cosa consente esattamente […]

Scala: passa Seq alle funzioni var-args

Data una funzione che accetta un numero variabile di argomenti, ad es def foo(os: String*) = println(os.toList) Come posso passare una sequenza di argomenti alla funzione? Mi piacerebbe scrivere: val args = Seq(“hi”, “there”) foo(args) Ovviamente, questo non funziona.

come rendere saveAsTextText NON dividere l’output in più file?

Quando si utilizza Scala in Spark, ogni volta che si esegue il dump dei risultati utilizzando saveAsTextFile , sembra dividere l’output in più parti. Sto solo passando un parametro (percorso) ad esso. val year = sc.textFile(“apat63_99.txt”).map(_.split(“,”)(1)).flatMap(_.split(“,”)).map((_,1)).reduceByKey((_+_)).map(_.swap) year.saveAsTextFile(“year”) Il numero di uscite corrisponde al numero di riduttori che utilizza? Questo significa che l’output è compresso? So […]

Perché la corrispondenza degli schemi in Scala non funziona con le variabili?

Assumi la seguente funzione: def fMatch(s: String) = { s match { case “a” => println(“It was a”) case _ => println(“It was something else”) } } Questo schema si adatta bene: scala> fMatch(“a”) It was a scala> fMatch(“b”) It was something else Quello che vorrei essere in grado di fare è il seguente: def […]

Ottenere la parte desugared di un’espressione di Scala / comprensione?

Qualcuno sa come ottenere la traduzione (solo parziale di Scala) di una espressione for / comprehension prima di provare effettivamente a compilare il REPL (o il compilatore)? L’unica cosa che ho trovato fino ad ora è il flag “-print” del compilatore ma che ti dà la versione completa di Scala …