10
votes

Aide avec Ruby Koans # 6 - Quelle exception a été attrapée?

J'essaie d'apprendre de rubis à travers les koans, mais je suis coincé à la 6ème étape.

Voici le code: P>

The answers you seek...
  <"FILL ME IN"> expected but was  <NoMethodError>.


0 commentaires

11 Réponses :


12
votes

La réponse ici est "nométhoderror"

Vous avez besoin des articles de chaque côté de la, pour être égaux, ce qui les rendra donc à la fois ex.class le fera.

Ensuite, vous devrez passer à / __ / ci-dessous.


2 commentaires

Est-ce que ce genre de triche? Faire un passe de test en faisant simplement un 1 == 1 n'est pas valide, je penserais. J'essaie de répondre à celui-ci aussi


Non, c'est vous demandant quelle erreur vous allez obtenir pour utiliser une méthode qu'un objet ne sait pas. Et parce que Aster égal est tout sur la fabrication de 1 == 1. Nométhoderror doit être égal au nométhoderror.



0
votes

Je suis seulement sur Koen 83, mais dans la plupart des koens, vous pouvez trouver la "réponse" dans la section intitulée de manière appropriée " les réponses que vous recherchez ... " immédiatement après " <"Remplissez-moi"> attendu mais était ". De temps en temps, j'ai cassé le framework rubykoan et je vais obtenir ce graphique Oldie ASCII (je ne suis pas sûr que cela soit censé être des mains en coupe ou un arbre, mais j'espère que vous le savez quand vous le verrez); Dans ces cas, le message d'erreur situé sous le graphique ASCII a été utile.


0 commentaires

4
votes

Je devais mettre la déclaration ASSERT_EQUAL dans des parens pour obtenir celui-ci à passer. Doit être un bug. xxx


0 commentaires

0
votes

Lorsque vous remplissez le nométhoderror, vous devez également remplir le message d'erreur (quelque chose à l'effet de "méthode non définie" quelque_methd .. ") Vous devez remplacer tout / __ / avec votre terme non seulement les soulignements


0 commentaires

3
votes

Vous devez remplacer __ avec le xxx


0 commentaires

1
votes

Carlo LEDESMA a la bonne réponse. (assert_equal nométhoderror, ex.class) Je ne sais pas pourquoi la réponse d'Elliot est top notée si quelqu'un vous demande de résoudre l'équation, 2x + 2 = 10 , vous ne répondez pas 2x + 2 = 2x + 2 . Mathématiquement tu serais correct, mais ce n'est pas une réponse.


0 commentaires

2
votes

Je viens de résoudre celui-ci. Je me suis concentré sur une ligne à la fois, mais cette méthode comprend deux éléments à modifier, une dans la rangée 16, une dans la rangée 20. Les deux sont nécessaires pour passer la leçon.

16: ASSERT_EQUAL NOMETHODERORROR, EX.CLASS

20: ASSERT_MATCH (/ * ONE_METHOD_NIL_DOESNT_D_ABOUT * /, ex.Message)

espoir que cela aide quelqu'un d'autre qui se coince!


0 commentaires

1
votes

pour la ligne 20 J'ai utilisé ceci: asser_match (/ one_method_nil_doesnt__bout /, ex.message) Je ne sais pas ce que ces personnages "/" sont. Je vais devoir le rechercher, mais cela a fonctionné.

Je pense que l'astuce était que le "quelque_method_nil_doesnt_nknow_about était dans des guillemets simples dans le message, de sorte que c'était la recherche de cela.


1 commentaires

Votre réponse ne répond pas vraiment à la Q, pouvez-vous modifier votre réponse pour mieux refléter une réponse réelle au Q au lieu du commentaire? Sinon, postez un commentaire (lorsque vous avez les privilèges à le faire).



0
votes

Si vous supprimez des citations, vous pouvez ajouter un bit du message d'erreur

assert_match(/undefined method/, ex.message)


0 commentaires

0
votes

Vous devez y répondre consécutivement, ce qui signifie à partir de la ligne 16 , puis allez sur la ligne 20 .

ligne 16 16 => Étant donné que asser_equal veux 1 = 1, nous devons regarder __ qui est nil.some_method_nil_doesnt_now_about pour être identique à ex. classe . Comme l'indique l'erreur; xxx

Nous pouvons voir que la classe elle-même est une "méthode nul qui n'existe pas", ce qui signifie qu'il ne renvoie rien. Donc, pas de point pour obtenir des erreurs. Mais dans Ruby, nous avons une erreur spécifique pour cela, Nométhoderror . La solution est; xxx

ligne 20 => logiquement, si nous obtenons une erreur , nous voulons un message unique pour ça. La réponse elle-même est déjà donnée; xxx

il suffit de remplacer ce message dans / __ / . Il y a deux réponses ici; xxx

profiter; p


0 commentaires

0
votes

Donc, c'est un peu déroutant, mais est en fait les bases de la façon dont les koans travaillent - tout en remplissant Nométhoderror est la solution valide ici, donc cela devient asser_equal nométhoderror, ex.class - Il ne "résoudre" pas ces koans spécifiques car la fonction a un autre point à corriger (ligne 20) - seule la résolution de ceux-ci résultera d'un koan à succès # 6


0 commentaires