What is the difference between = and := in Scala?

Jay Taylor picture Jay Taylor · Oct 13, 2011 · Viewed 12.9k times · Source

What is the difference between = and := in Scala?

I have googled extensively for "scala colon-equals", but was unable to find anything definitive.

Answer

Owen picture Owen · Oct 13, 2011

= in scala is the actual assignment operator -- it does a handful of specific things that for the most part you don't have control over, such as

  • Giving a val or var a value when it's created
  • Changing the value of a var
  • Changing the value of a field on a class
  • Making a type alias
  • Probably others

:= is not a built-in operator -- anyone can overload it and define it to mean whatever they like. The reason people like to use := is because it looks very assignmenty and is used as an assignment operator in other languages.

So, if you're trying to find out what := means in the particular library you're using... my advice is look through the Scaladocs (if they exist) for a method named :=.