Qual è l’espansione eta in Scala?

Sono nuovo di Scala. Ho appena sentito il termine “espansione eta” e so grosso modo che significa espandere un metodo a un object funzione. Ma trovo poche risorse in SO che lo introducano sistematicamente.

Sono curioso di sapere come funziona l’espansione eta in Scala. Quali sono gli scenari di cui è necessaria l’espansione eta? E come viene implementata l’ espansione eta in Scala?

So approssimativamente che in casi come questo:

def someMethod(x: Int): Int = x * x 

someMethod _ sarà approssimativamente tradotto in un nuovo object funzione come questo:

 new Function1[Int, Int] { def apply(x: Int): Int = x * x } 

È tutto ciò che Scala fa?