What does `:_*` (colon underscore star) do in Scala?

It “splats”1 the sequence. Look at the constructor signature new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding, child: Node*) which is called as new Elem(prefix, label, attributes, scope, child1, child2, … childN) but here there is only a sequence, not child1, child2, etc. so this allows the result sequence to be used as the … Read more

Get item in the list in Scala?

Use parentheses: data(2) But you don’t really want to do that with lists very often, since linked lists take time to traverse. If you want to index into a collection, use Vector (immutable) or ArrayBuffer (mutable) or possibly Array (which is just a Java array, except again you index into it with (i) instead of … Read more

Difference between case object and object

Here’s one difference – case objects extend the Serializable trait, so they can be serialized. Regular objects cannot by default: scala> object A defined module A scala> case object B defined module B scala> import java.io._ import java.io._ scala> val bos = new ByteArrayOutputStream bos: java.io.ByteArrayOutputStream = scala> val oos = new ObjectOutputStream(bos) oos: java.io.ObjectOutputStream … Read more

Case objects vs Enumerations in Scala

One big difference is that Enumerations come with support for instantiating them from some name String. For example: object Currency extends Enumeration { val GBP = Value(“GBP”) val EUR = Value(“EUR”) //etc. } Then you can do: val ccy = Currency.withName(“EUR”) This is useful when wishing to persist enumerations (for example, to a database) or … Read more

Task not serializable: java.io.NotSerializableException when calling function outside closure only on classes not objects

[*] RDDs extend the Serialisable interface, so this is not what’s causing your task to fail. Now this doesn’t mean that you can serialise an RDD with Spark and avoid NotSerializableException Spark is a distributed computing engine and its main abstraction is a resilient distributed dataset (RDD), which can be viewed as a distributed collection. … Read more

Best way to parse command-line parameters? [closed]

For most cases you do not need an external parser. Scala’s pattern matching allows consuming args in a functional style. For example: object MmlAlnApp { val usage = “”” Usage: mmlaln [–min-size num] [–max-size num] filename “”” def main(args: Array[String]) { if (args.length == 0) println(usage) val arglist = args.toList type OptionMap = Map[Symbol, Any] … Read more