top | item 12267685

(no title)

gmartres | 9 years ago

Scala does not have non-nullable types currently (but that might happen in the future), in practice this is not a problem simply because using null is seen as a code smell and basically no Scala library API expects parameters to be null or return null, optional values are usually represented with the standard library class Option: http://www.scala-lang.org/api/2.11.8/#scala.Option

discuss

order

oever|9 years ago

One of the main points of the blog is that Scala.js integrates well with the JavaScript apis and those apis are full of null. A typical loop in the DOM looks like this:

    var node = element.firstChild;
    while (node) {
        // do something
        node = node.nextSibling;
    }
Perhaps those interfaces use the Option class?

oever|9 years ago

I wrote a small test function. It appears that Scala.js has no default protections against null values from the browser DOM.

  def printNodes(targetNode: dom.Node): Unit = {
    var c = targetNode.firstChild        
    while (c != null) {
      if (c.nodeValue != null) {
        println(c.nodeValue)
      }
      c = c.nextSibling
    }
  }
The return value from firstChild and nextSibling can be null.