Q:

Scala case class vs Kotlin data class

Scala has a feature called case class, while Kotlin has another feature called data class.
Which are the main differences between Scala case class and Kotlin data class?

A:

Overall they are very similar, but there are some differences I'd mention:

Scala case class can have multiple parameter lists (including implicit parameters), and only parameters from the first list are used for toString/equals/hashCode. 
Scala allows a case class to have no parameters, Kotlin doesn't. Of course, usually such a case class should be an object instead.
On that note, case objects exist.
The companion object of a case class extends the corresponding function type by default.

