Over a million developers have joined DZone.

Scala: Setting a default value

DZone's Guide to

Scala: Setting a default value

· Java Zone ·
Free Resource

Start coding something amazing with our library of open source Cloud code patterns. Content provided by IBM.

We wanted to try and generate a build label to use for the name of the artifacts archive that gets generated each time we run the build but wanted to default it to a hard coded value if the system property representing the build label wasn’t available.

In Ruby we would be able to do something like this:

buildLabel =  ENV["GO_PIPELINE_LABEL"] || "LOCAL"

There isn’t a function in Scala that does that so we initially ended up with this:

  def buildLabel() = [{ 
System.getenv("GO_PIPELINE_LABEL") match {
case null => "LOCAL"
case label => label

My colleague Mushtaq suggested passing the initial value into an Option like so…

def buildLabel() = {

…which I think is pretty neat!

I tried to see what the definition of an operator to do it the Ruby way would look like and ended up with the following:

class RichAny[A](value:A ) {                              
def || (default:A ) = { Option(value).getOrElse(default) }
implicit def any2RichAny[A <: AnyRef](x: A) = new RichAny(x)

Which we can use like so:

def buildLabel() = {
System.getenv("GO_PIPELINE_LABEL") || "LABEL"

I imagine that’s probably not the idiomatic Scala way to do it so I’d be curious to know what is.

From http://www.markhneedham.com/blog/2011/06/12/scala-setting-a-default-value/

Use this tool to look at the contents of GitHub and classify code based on the programming language used.  Content provided by IBM Developer.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}