J'ai créé une classe qui s'étend à Counter et qui conserve les additions et les soustractions. J'essaie d'appeler xs, puis retourne la somme des fois que le nombre monte ou descend qui a été appelé sur instance par xs, Sa compilation mais son échec.Sous-typage dans Scala
class Counter {
private var n = 0
def increment() = { n = n + 1 }
def decrement() = { n = n - 1 }
def get() : Int = n
}
def x (xs : Counter => Unit) : Int = {
class foo extends Counter {
var count = 0
def incrementAndGet = {count += 1; count}
def decrementAndGet = {count -= 1; count}
}
val counter1 = new foo
xs(counter1)
counter1.incrementAndGet
counter1.decrementAndGet
}
Merci à tous, j'étais en mesure de le transmettre. J'avais besoin de créer une autre variable qui peut garder une trace de mes incréments et décréments, puis à l'intérieur de la def inc et def dec, je voudrais ajouter à ajouter ou soustraire du compte :)
Comment est défini le compteur; que voulez-vous dire par «échouer», que voulez-vous que le code fasse, ...? Veuillez décrire votre problème en détail. – stholzm
Par mes tests votre code fonctionne très bien. Je suppose que ça ne marche pas comme tu veux mais tu n'as pas décrit ce que tu veux donc c'est difficile à dire. En particulier, l'instruction 'xs (counter1)' semble être tout à fait inutile. – jwvh
Il y a beaucoup de choses qui ne vont pas (ou au moins bizarre) avec ce code. Quel est le point des attributs de compteur ('n',' increment() ',' decrement() 'et' get() ')? Ils ne sont utilisés nulle part. Y a-t-il un code manquant qui l'utilise? De plus, que signifie exactement le "nombre total de fois que ce nombre augmente ou diminue"? L'incrémentation suivie de la décrémentation devrait-elle donner 2 ou 0? Pouvez-vous montrer comment appelez-vous 'x'? Que passes-tu en tant que «xs»? Quel est le point de l'invoquer? Si vous énoncez votre problème original sans vous référer à votre implémentation, nous pouvons peut-être vous guider vers une solution adaptée. – slouc