|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
concise function literal as foreach argumentHello list,
I'm having a strange type resolution error in a function literal. Given this: tracks\\"track" foreach { track => println(track\"name" text) } where tracks is a NodeSeq, I can iterate over each "track" element and dump its "name" text node. The literal syntax doesn't have a type declaration, and so I figured this could be further reduced: tracks\\"track" foreach { println(_\"name" text) } However the compiler falls over with: error: missing parameter type for expanded function ((x$1) => x$1.$bslash("name").text) tracks\\"track" foreach { println(_\"name" text) } That doesn't make sense, give that a) it knows the type of the collection (inferred to NodeSeq) and b) the working example merely names the variable, but doesn't declare its type. Am I missing something here? Sincerely, Chris |
|
|
Re: concise function literal as foreach argumentYour problem is that "println" does not pass any arguments when it calls what you pass to it.
Or, in other words, you wrote: tracks\\"track" foreach { println(x => x "name" text) }
And you wanted: tracks\\"track" foreach { x => println(x \"name" text) } When you use "_", the scope is almost aways the closest enclosing parenthesis.
On Sun, Jul 5, 2009 at 2:16 PM, Chris Lewis <chris@...> wrote: Hello list, -- Daniel C. Sobral Something I learned in academia: there are three kinds of academic reviews: review by name, review by reference and review by value. |
|
|
Re: concise function literal as foreach argument
Yeah that's it. PaulP explained this in the IRC channel. Getting used
to all the magic takes a little time :)
thanks chris Daniel Sobral wrote: Your problem is that "println" does not pass any arguments when it calls what you pass to it. |
| Free embeddable forum powered by Nabble | Forum Help |