I'd like to do in Scala something I would do in Java like this:
public void recv(String from) {
recv(from, null);
}
public void recv(String from, Integer key) {
/* if key defined do some preliminary work */
/* do real work */
}
// case 1
recv("/x/y/z");
// case 2
recv("/x/y/z", 1);
In Scala I could do:
def recv(from: String,
key: Int = null.asInstanceOf[Int]) {
/* ... */
}
but it looks ugly. Or I could do:
def recv(from: String,
key: Option[Int] = None) {
/* ... */
}
but now call with key looks ugly:
// case 2
recv("/x/y/z", Some(1));
What's the proper Scala way? Thank you.
The Option
way is the Scala way. You can make the user code a little nicer by providing helper methods.
private def recv(from: String, key: Option[Int]) {
/* ... */
}
def recv(from: String, key: Int) {
recv(from, Some(key))
}
def recv(from: String) {
recv(from, None)
}
null.asInstanceOf[Int]
evaluates to 0
by the way.