Skip to content

Instantly share code, notes, and snippets.

@adinapoli
Created April 12, 2012 17:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adinapoli/2369342 to your computer and use it in GitHub Desktop.
Save adinapoli/2369342 to your computer and use it in GitHub Desktop.
when operator in scala
/**
* A syntactic sugar corresponding to the Lisp's when. Execute the body
* when the pred evaluates to true.
* @param condition A predicate or value that evaluate to a Boolean
* @param block A valid block of scala code
*/
def when (condition : => Boolean)( block : => Unit)
{
if (condition){ block }
}
//A left associative version from the redditor elbowich
implicit def `when for function0`[A](f: => A) = new {
def when(cond: Boolean) = if(cond) Some(f) else None
}
@benkolera
Copy link

This is great for side effect driven code, but this may also be useful to you for code that you care about the return value ( which should be most of the time :) ):

def when[A] ( condition : => Boolean ) ( block : => A ) : Option[A] = {
  if ( condition ) {
     Some( block )
  } else {
    None
  }
} 

I'm not quite sure whether this is useful to you, but it may be an interesting thing if you're new to Scala and couldn't quite figure out how you would return a value from when without returning a blasphemous 'null' value. ;)

Happy Scala-ing!

@adinapoli
Copy link
Author

Yep! Thanks for the suggestion!
Bye!
Alfredo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment