scala - Declaring functions two ways. What is the distinction? -


are these 2 function declarations different?

if not, why have different tostring values?

scala> def f: (int) => int = x=> x*x f: (int) => int  scala> def f(x: int) = x*x f: (int)int 

the first no-argument method f1 returns function1[int, int].

scala> def f1: (int => int) = (x: int) => x * x f1: (int) => int 

the second 1 argument method f2 takes an int , returns int.

scala> def f2(x: int): int = x * x f2: (x: int)int 

you can invoke f1 , f2 same syntax, although when call f1(2) expanded f1.apply(2).

scala> f1 res0: (int) => int = <function1>  scala> f1(2) res1: int = 4  scala> f1.apply(2) res2: int = 2  scala> f2(2) res3: int = 4 

finally, can 'lift' method f2 function follows.

scala> f2 <console>:6: error: missing arguments method f2 in object $iw; follow method `_' if want treat partially applied funct ion        f2        ^  scala> f2 _ res7: (int) => int = <function1>  scala> (f2 _).apply(2) res8: int = 4 

exercise: type of f1 _?


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -