Importance of spaces in scala function by-name declarations:

I spent some time today having syntax problems with scala function by-name function declarations. It turns out that a space after the colon is critical. In the end someone on the scala irc channel at irc.freenode.net. by the name of ‘mapreduce’ helped me out (thanks!).

This session should clarify what works and what doesn’t work:

scala> def some1 [T] (interval :int) (f :() =>T) (noContent:T) = {}   
some1: [T](int)(() => T)(T)Unit

scala> def some2 [T] (interval :int) (f :=>T) (noContent:T) = {}  
<console>:1: error: ':' expected but identifier found.
def some2 [T] (interval :int) (f :=>T) (noContent:T) = {}
^
<console>:1: error: identifier expected but eof found.
def some2 [T] (interval :int) (f :=>T) (noContent:T) = {}
^

scala> def some2 [T] (interval :int) (f : =>T) (noContent:T) = {}
some2: [T](int)(=> T)(T)Unit

scala> def some3 [T] (interval :int) (f: =>T) (noContent:T) = {}
some3: [T](int)(=> T)(T)Unit

Comments (View)
blog comments powered by Disqus

Following: