Comment pousser les clés et les valeurs dans un de hachage vide w/ Ruby?
J'ai un dictionnaire de classe et que vous voulez être en mesure de pousser les clés (mots-clés) et des valeurs (définitions) dans un hachage vide avec une "ajouter" de la méthode. Je ne comprends pas comment un point de vue syntaxique d'écrire cela. J'ai inclus un RSPEC fichier trop.
ruby:
class Dictionary
attr_accessor :keyword, :definition
def entries
@hash = {}
end
def add(options)
options.map do |keyword, definition|
@hash[keyword.to_sym] = definition
end
end
end
Rspec:
require 'dictionary'
describe Dictionary do
before do
@d = Dictionary.new
end
it 'can add whole entries with keyword and definition' do
@d.add('fish' => 'aquatic animal')
@d.entries.should == {'fish' => 'aquatic animal'}
@d.keywords.should == ['fish']
end
Toute aide est appréciée. Merci!!!!
Mise à JOUR:
Merci Dave Newton pour la réponse. J'ai utilisé votre code et eu cette erreur:
ERREUR:
*Failure/Error: @d.keywords.should == ['fish']
NoMethodError:
undefined method `keywords' for #<Dictionary:0x007fb0c31bd458
@hash={"fish"=>"aquatic animal"}>*
Je reçois un autre message d'erreur quand je convertir " mot " dans un symbole à l'aide de @hash[mot.to_sym] = définition
*Failure/Error: @d.entries.should == {'fish' => 'aquatic animal'}
expected: {"fish"=>"aquatic animal"}
got: {:fish=>"aquatic animal"} (using ==)
Diff:
@@ -1,2 +1,2 @@
-"fish" => "aquatic animal"
+:fish => "aquatic animal"*
OriginalL'auteur andy4thehuynh | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
Instancier votre hash dans
Dictionary
'sinitialize
:Droit maintenant, vous n'avez pas de hachage jusqu'à ce que vous appelez
entries
, qui ne le sont pas.entries
devrait retour la existant de hachage, de ne pas en créer un nouveau.keywords
doit retourner la valeur de hachage de touches.Vous n'avez pas besoin d'accesseurs pour
keyword
etdefinition
. Singulière rubriques sont vides de sens dans un dictionnaire de classe. Vous pourriez vouloir quelque chose commelookup(word)
que retourné une définition.Aussi, vous convertissez les mots des symboles, mais je ne sais pas pourquoi–en particulier parce que vous utilisez de la ficelle clés dans votre spec. Choisissez-en un, bien que je ne suis pas convaincu que c'est un cas où les symboles d'ajouter de la valeur.
Veuillez considérer l'appellation variable avec soin pour fournir autant que possible.
OriginalL'auteur Dave Newton
Regardant votre Rspec, Il semble que vous besoin de cette installation.
Ne pas utiliser
key.to_sym
dans la méthode add, justekey
Pour donner de la souplesse à ajouter de la méthode, je peux retourner à l'auto objet de continuesly ajouter.
Donc, je peux le faire maintenant.
OriginalL'auteur Abibullah Rahamathulah