J'ai écrit une fonction en Java et je souhaite que cette fonction renvoie plusieurs valeurs. Sauf l'utilisation de la matrice et de la structure, existe-t-il un moyen de renvoyer plusieurs valeurs?
My Code: P>
String query40 = "SELECT Good_Name,Quantity,Price from Tbl1 where Good_ID="+x;
Cursor c = db.rawQuery(query, null);
if (c!= null && c.moveToFirst())
{
GoodNameShow = c.getString(0);
QuantityShow = c.getLong(1);
GoodUnitPriceShow = c.getLong(2);
return GoodNameShow,QuantityShow ,GoodUnitPriceShow ;
}
3 Réponses :
en Java, lorsque vous souhaitez que une fonction renvoie plusieurs valeurs, vous devez
Dans votre cas, vous devez clairement définir une classe puis changez votre fonction sur p> Afficher code> qui pourrait avoir des champs Nom code>, Quantité code> et prix code>: p>
@estiedi voulez-vous dire que collection.sort code> est mauvais style? Vous ne pouvez pas effectuer de code efficace si vous essayez de la rendre compréhensible par des personnes qui ne connaissent pas les faits les plus élémentaires de la langue. Si quelqu'un ne sait pas qu'un objet reçu peut être modifié par une méthode, il doit alors apprendre avant d'être impliqué dans une équipe professionnelle.
Il est toujours regrettable que les langues n'apprenaient pas l'exemple de CLU. L'affectation multiple liée de CLU est d'une utilisation semi-douteuse ( x, y = y, x code>), mais plusieurs valeurs de retour sont très b> utiles ( x, y = fonction (paramètres) code>). Forçage d'un objet d'emballage à renvoyer (souvent par des déclarations "propres" similaires à la paire de la classe code>) a une pénalité dans de très nombreux appels serrés et transmettre un objet à contenir des valeurs de retour est horriblement Messy sans compilateur garantit que les champs sont remplis.
@ TGM1024 Vous devriez avoir un coup d'œil à Go où Bot renvoyant plusieurs valeurs et plusieurs assignations sont très utiles;)
J'ai développé une approche très fondamentale pour faire face à ce type de situation.
J'ai utilisé une logique de STRAND> Sperator forte> dans les chaînes. p>
Par exemple si vous avez besoin si vous avez besoin de Pour revenir dans la même fonction 1. Valeur int 2. Valeur double 3. Valeur de chaîne p>
Vous pouvez utiliser une chaîne de séparateur Vous pouvez renvoyer une chaîne composée de toutes les valeurs séparées par ce séparateur
" et convertir en types équivalents où la fonction a été appelée en utilisant renvoie le code suivant pour explication - p> séparateur utilisé = "," p> Cette approche peut être utilisée comme raccourci lorsque vous ne souhaitez pas augmenter le nombre de classes pour uniquement les retours de fonction p> Cela dépend de la situation à la situation qui s'approvisionner à prendre. P > p>
Bien que cette suggestion n'augmente pas le nombre de classes, c'est une approche horrible pour de nombreuses raisons: vous créez plusieurs objets inutiles ( stringbuilder code>, string code> s) qui sont beaucoup plus chères qu'une seule instance d'une classe d'utilité. L'effort de récupération des valeurs est injustifiable important, nécessite un code inutile et a un impact notable sur la performance. Comme vous l'avez déjà remarqué, le séparateur ne doit pas apparaître dans la chaîne et c'est une hypothèse injustifiable.
J'ai bu pourvu juste pour que les gens n'utilisent jamais cette approche. C'est mauvais pour la performance et la lisibilité, et le Calee ne sait jamais à quoi s'attendre d'un retour comme ça.
@Still_Learning - Je sais que cette approche est très mauvaise en ce qui concerne la performance, mais cela ne faisait qu'une partie de la pratique que j'avais fait quand j'avais commencé avec la programmation. Je travaillais surtout sur Julia et Matlab où vous pouvez retourner plusieurs vals comme, retour Var1, Var2, etc ... donc quand j'ai commencé avec Java, je venais de faire en tant que partie de la pratique. En fait, j'ai pensé que cela fonctionnerait bien, mais je me sentais plus tard que cela donne une très mauvaise performance.
Une approche rapide et laide que j'ai rencontrée à quelques reprises (même dans la bibliothèque Java elle-même) consiste à renvoyer vos valeurs comme alors, il est utilisé comme celui-ci: p> incorporer les valeurs dans un objet dédié est beaucoup plus propre, mais je le laisse ici quand même. p> p> objet [] code>, puis déballer à l'aide de la coulée.
par exemple
Ce qui compte n'est pas "Eclipse" mais la langue (Java).
Je réalise que votre code est pseudo-java, mais assurez-vous de nommer vos variables avec CAMELCASE (E.G.
GoNnestehow code> ouGoodunitPricesComment code>).