This page is no longer maintained — Please continue to the home page at www.scala-lang.org

apply & named arguments

2 replies
Michael Fortin
Joined: 2010-02-16,
User offline. Last seen 42 years 45 weeks ago.

for a function I can call apply like so:
def f(x:String, y:String) = println(x + y)
val myf = f _
myf.apply("my arg", " another")

is there a way to call apply with named arguments? eg.
myf.apply(x="inX",y="inY")
or
myf.apply("x"->"inX","y"->"inY")

these obviously don't work.

thanks,
_M!ke

Jason Zaugg
Joined: 2009-05-18,
User offline. Last seen 38 weeks 5 days ago.
Re: apply & named arguments

The parameter names of FunctionN#apply are alway `v1`, .. `vn`.

So the following is purely a co-incidence.

scala> val f = (v1: String, v2: String) => v1 + v2
f: (String, String) => java.lang.String =

scala> f(v2 = "2", v1 = "1")
res1: java.lang.String = 12

-jason

On Tue, Jul 20, 2010 at 9:32 PM, Michael Fortin wrote:
> for a function I can call apply like so:
> def f(x:String, y:String) = println(x + y)
> val myf = f _
> myf.apply("my arg", " another")
>
> is there a way to call apply with named arguments? eg.
> myf.apply(x="inX",y="inY")
> or
> myf.apply("x"->"inX","y"->"inY")
>
> these obviously don't work.
>
> thanks,
> _M!ke
>
>

Michael Fortin
Joined: 2010-02-16,
User offline. Last seen 42 years 45 weeks ago.
Re: apply & named arguments

Thanks for the comments, guys, that helps.

_M!ke

On Jul 20, 2010, at 3:49 PM, Jason Zaugg wrote:

> The parameter names of FunctionN#apply are alway `v1`, .. `vn`.
>
> So the following is purely a co-incidence.
>
> scala> val f = (v1: String, v2: String) => v1 + v2
> f: (String, String) => java.lang.String =
>
> scala> f(v2 = "2", v1 = "1")
> res1: java.lang.String = 12
>
> -jason
>
> On Tue, Jul 20, 2010 at 9:32 PM, Michael Fortin wrote:
>> for a function I can call apply like so:
>> def f(x:String, y:String) = println(x + y)
>> val myf = f _
>> myf.apply("my arg", " another")
>>
>> is there a way to call apply with named arguments? eg.
>> myf.apply(x="inX",y="inY")
>> or
>> myf.apply("x"->"inX","y"->"inY")
>>
>> these obviously don't work.
>>
>> thanks,
>> _M!ke
>>
>>

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland