Pourquoi queue.get(
) retourner une liste vide?
class MyQueue{
var queue=List[Int](3,5,7)
def get(){
this.queue.head
}
}
object QueueOperator {
def main(args: Array[String]) {
val queue=new MyQueue
println(queue.get())
}
}
Comment obtenir le premier élément?
Il ne renvoie pas la liste vide, il renvoie Unit
(un zéro-Tuple), qui est l'équivalent de Scala de void
en Java. S'il renvoyait la liste vide, vous verriez List()
imprimé sur la console plutôt que ()
(Tuple nul).
Le problème est que vous utilisez la mauvaise syntaxe pour votre méthode get
. Vous devez utiliser un =
pour indiquer que get
renvoie une valeur:
def get() = {
this.queue.head
}
Ou c'est probablement encore mieux:
def get = this.queue.head
Dans Scala vous laissez généralement les parenthèses (liste de paramètres) pour les fonctions nullary qui n'ont pas d'effets secondaires, mais cela vous oblige à laisser les parenthèses lorsque vous appelez queue.get
ainsi que.
Vous voudrez peut-être jeter un coup d'œil sur le Scala Style Guide , en particulier le section sur les méthodes .
Parfois, il peut être bon d'utiliser
prendre 1
au lieu de head car il ne provoque pas d'exception sur les listes vides et renvoie à nouveau une liste vide.