-1

I am new to scala and I confused little bit with = and =>, I don't know in which scenario exactly = used and => used.

C Kondaiah
  • 72
  • 8
  • 2
    = is for assignemnet and => to define the anonymous function – Raman Mishra Jan 04 '19 at 12:57
  • Without a grasp of the basics, don't worry about `=>`. It's a relatively advanced thing you shouldn't need to use unless you're intentionally trying to define anonymous functions, as @Raman says (or using things like `.map()`). – James Whiteley Jan 04 '19 at 13:43

1 Answers1

1

@RamanMishra's comment is correct, however I would like to expand it a bit hopping it becomes more clear to you.

a = b means a is now equals to b (in the imperative meaning of the word, which is better understood as assignment).
It is used in many places, including when defining a function\method, for example

def sum(a: Int, b: Int): Int = a + b

The above statement can be readed as:
"We defined a function with name sum which takes two parameters (a & b) both of type Int and returns an Int. And its body\implementation is 'equals' to a + b".

a => b means, there is a function which takes a parameters list a and has a body b, it is used a couple of places, including anonymous functions and higher-order functions.

val anonymous: Int => Int = x => x + 1

The above statement can be readed as: "We defined a value called anonymous, whose type is a function with one parameter of type Int and a return type Int, which is 'equals' to the 'anonymous' function which takes one parameter x (its type is inferred in by the context, in this type the explicit type signature before) and its body is x + 1"

def higherOrder(x: Int, f: Int => Int): Int = f(x)

The above statement can be readed as: "There is a function (sum), which takes another function as a parameter (f), the later is a function of type Int to Int".


Edit

As @Aki suggested, the => is also used in pattern matching to separate the cases and the block of code to execute for each one.

def fact(n: Long): Long = n match {
  case 0L => 1L
  case n  => n * fact(n - 1)
}

"This is somewhat similar to a parameter list => function body, as the above examples".


PS: This is a 101 Scala question, SO is not the best place for such questions, because there is probably enough resources on the internet - like this cheatsheet, or better places to ask - like the scala gitter channel.