Créer une Nouvelle Instance de l'Objet Kotlin
J'ai un objet QuickSort que je tente de créer 2 instances d'. Lorsque j'essaie de créer 2 cas distincts, je peux voir que c'est seulement à l'aide d'un exemple parce que j'ai un compte dans la QuickSort classe qui est inexact. Kotlin ne pas utiliser nouveau dans la syntaxe, alors comment pourrais-je aller à ce sujet?
object QuickSort {
var count = 0;
quickSortOne(...){
...
count++
...
}
quickSortTwo(...){
...
count++
...
}
}
Voici comment j'essaie de créer mes 2 instances.Mon but est d'avoir quickSort1 et quickSort2 2 instances distinctes.
var quickSort1 = QuickSort
quickSort1.quickSortOne(...)
var quickSort2 = QuickSort
quickSort2.quickSortTwo(...)
Tentative de Solution: la Conversion de QuickSort à partir d'un objet à une classe. Cette encore les résultats dans la même instance d'être utilisés comme illustré par le comte de la deuxième méthode, y compris les premiers appels comte.
class QuickSort {
var count = 0;
quickSortOne(...){
...
count++
...
}
quickSortTwo(...){
...
count++
...
}
}
...
var quickSortFirst = QuickSort()
printTest(quickSortFirst.quickSortFirst(arrayList, 0, arrayList.size - 1))
var quickSortLast = QuickSort()
printTest(quickSortLast.quickSortLast(arrayList, 0, arrayList.size - 1))
- Adam, je suppose que vous vous moquez! Pourquoi créez-vous
companion object
? Il a pour objet de: Notez que, même si les membres de compagnon objets ressemblent à des membres statiques dans d'autres langues, à l'exécution, ceux qui sont encore membres de l'instance de l'objet réel,... - Enlevez juste le compagnon de l'objet et de faire vos méthodes normales de membres de la classe.
- Merci @Ingaz! J'ai enlevé le
companion object{}
et mis à jour mon code exactement comme mis en œuvre ci-dessus. Il est toujours à l'aide de la même QuickSort() de l'instance. - Félicitations! Kotlin est une grande langue, pratique et pas moche en même temps. Aussi, je ne comprend toujours pas ce que vous avez essayé d'accomplir. Kotlin a espace de jeu en ligne: try.kotlinlang.org/#/UserProjects/9ck28rcs1gco73cerr7ql2hi2g/...
My goal is to have quickSort1 and quickSort2 be 2 separate instances.
Votre tentative de solution est exactement ce que fait. Code complet serait utile, il y a beaucoup de suspects à la recherche de bits. (Où aquickSortFirst
méthode soudainement venu? EstquickSortOne
une fonction? Deux d'entre eux fonctionnent sur le même tableau de la liste, est-ce correct?)
Vous devez vous connecter pour publier un commentaire.
object
est un kotlin la version d'un singleton. En l'utilisant vous préciser qu'il y aura seulement 1 instance qui est partagée par tous ses utilisateurs.De le transformer en un
class
et vous serez en mesure de créer des instances individuelles.Adam, vous manquez le point de l'ensemble:
object
s sont singeletones par la conception.C'est un de bonne scala featuras copié dans kotlin.
(En java ou en C# vous avez laid
static
membres de la mélanger à des membres de la classe).Quant à votre question:
A. Non, vous ne pouvez pas faire deux instanse de kotlin/scala
object
que vous ne pouvez pas avoir deux différentsString
en Java/C#.B. il suffit de remplacer
object
avecclass
(et avez-vous vraiment besoinnew
? Je n'ai jamais manqué en python)companion object
- ils sont un peu près de/équivalent de membres statiques en Java/C#.Vous voulez absolument utiliser une classe comme l'objet de mot-clé crée seulement un exemple. Vous pouvez utiliser un compagnon de l'objet au sein de la classe afin de garder une trace du nombre d'instances de la classe qui se créé.
Voici un exemple qui vous aussi essayer ici
qui produit :
J'ai compris mon problème. J'étais de passage dans la même liste de tableaux à la fois quickSortOne() et quickSortTwo(). Depuis la liste de tableaux a été modifié par la première méthode, la seconde méthode est d'être affectées.