J'ai commencé à jouer avec Scala il y a quelques jours. Ce que je voulais faire est d'écrire une très petite classe qui représenterait des nombres naturels et j'aimerais qu'elle soit implicitement convertible de/vers Int
. Honnêtement, je n'ai pas beaucoup fait jusqu'à présent. Voici le code:Collé créant implicitement convertible de/vers les numéros Natgural Int
object main {
class Natural(n: Int) {
def isDividerOf(m: Natural): Boolean = m % n == 0
}
implicit def Int(m: Natural): Int = m
implicit def Natural(n: Int): Natural = new Natural(n)
def main(args: Array[String]) ={
println("test")
println(60 isDividerOf 600)
}
}
Le code est en mesure de compiler, mais quand je le lance (peu importe les chiffres que j'utilise comme arguments à isDividerOf
) l'exécution du programme est toujours en pause/suspendu, autrement dit après l'impression test
il ne sort rien, non il sort correctement.
Qu'est-ce que je fais mal?
Merci @OlivierBlanvillain. Le bit '' -Xprint: typer''' était vraiment utile, mon mauvais je ne le savais pas. Pouvez-vous expliquer pourquoi vous ne suggérez pas d'utiliser des conversions implicites? Parce qu'ils sont la source de confusions ou qu'il y a une autre raison? J'ai honnêtement eu l'impression qu'il est très commun à Scala. – Gonzalez
Le fait que vous, en tant que débutant, soit confus par des conversions implicites au point où vous avez pris le temps d'aller sur SO et de poser cette question est un bon indicateur que les conversions implicites sont une grande source de confusion. Il y a beaucoup à dire sur le sujet, s'il vous plaît ouvrir une autre question "Pourquoi je ne devrais pas utiliser les conversions implicites dans mon code?" :) – OlivierBlanvillain