L'explication est plutôt inattendue : print
a un paramètre nommé x
. Utilisation de x = ...
utilise le argument nommé donc print(x="Hello World")
est la même chose que print("Hello World")
.
Voir Docs Scala Predef ou Predef.scala source :
object Predef /*....*/ {
/*....*/
def print(x: Any) = Console.print(x)
/*....*/
}
Remarque : ce point a déjà été abordé dans Liste de diffusion interne de Scala :
Scala essaie actuellement de traiter intelligemment "x = e" comme un argument nommé ou une affectation ... Cela peut être surprenant pour l'utilisateur ....
Proposition : nous déprécions les affectations dans les listes d'arguments
Il y a aussi existe un problème SI-8206 pour cela, le changement a probablement été mis en œuvre dans numéro 426 pour Scala 2.13.
Votre code continuera à compiler après la dépréciation, avec la même signification. Le changement sera que personne (du moins personne suffisamment familier avec les spécifications du langage / l'implémentation) ne devrait s'attendre à ce qu'il soit interprété comme une affectation.