J'essaie de comparer deux cordes en smalltalk, mais je semble faire quelque chose de mal.
Je continue à obtenir cette erreur: P>
Exception non gérée: Récepteur non booléen. Procédez à la vérité. P> aucune idée de ce que je fais mal? P> p>
6 Réponses :
ESSAYEZ
if a < b then puts "a is less than b" else puts "a is greater than or equal to b" end
Merci mon compagnon Android. C'était le problème.
Woof - Je ne suis pas si familier w smalltalk mais je me souviens de ce que les crochets sont pour évaluation et que si vous évaluez = code> opérateur, vous n'allez pas obtenir un booléen :)
Soupigh - Je voulais ajouter de l'exemple d'ACode ici, mais c'était mal formé. Oublie, j'ai ajouté une réponse ...
Si vous bloquez la comparaison? J'aurais pensé que: serait suffisant. P> P>
Les parens sont à la fois inutiles et atypiques. En fait, je trouve que si j'écris des expressions qui nécessitent des parens (en particulier des parens imbriqués), je fais probablement des choses trop compliquées et que je le refactorise à une méthode Named Temp ou de méthode distincte.
à la place, essayez: p> [stringone = stringtwo] code> est un bloc, pas un booléen. Lorsque le bloc est invoqué, il entraînera peut-être un booléen. Mais vous n'invokez pas le bloc ici. Au lieu de cela, vous faites simplement que le bloc soit le récepteur de
iftrue code>.
Comme d'autres l'ont dit, cela fonctionnera comme si vous voulez vous débarrasser de la première série de crochets.
Mais pour expliquer le problème, vous couriez mieux: P>
stringOne = stringTwo ifTrue:[myNumber := 20]
Mais je semble faire quelque chose de mal p> blockQuote>
Étant donné que vous utilisez Visualworks, votre installation devrait inclure un dossier DOC Strong>. P>
Regardez sur le AppDevGuide.pdf Strong> - Il dispose de nombreuses informations sur la programmation avec Visualworks et plus au point de proposer de nombreuses informations d'introduction sur la programmation SmallTalk. P>
Regardez à travers la table du contenu au début, jusqu'à ce que Chapitre 7 "Structures de contrôle" Strong>, cliquez sur "Branchement" ou "Tests conditionnels" et vous serez conduit à la section appropriée du PDF que Vous raconte tout à propos de SmallTalk Si, alors-ele et donne des exemples qui vous auraient aidé à voir ce que vous faisiez mal. P>
Je voudrais ajouter le 50cent suivant:
Comme les blocs sont en réalité lambdas, qui peuvent être transmis, un autre bon exemple serait la méthode suivante: p> Donc, l'argument à Iftrue: / iffalse: peut réellement venir de quelqu'un d'autre. Ce type de conditions passées est souvent utile dans "..ifabsent:" ou "..onError:" type de méthodes. P> (signifiait à l'origine comme un commentaire, mais je n'ai pas pu obtenir l'exemple de code être non formaté) p> p>