Ich bin nicht sicher, was Sie versucht haben, aber ich würde vorschlagen, dass Sie Ihr Problem in kleine diskrete Sätze brechen, lösen die Sätze einer nach dem anderen, und schließlich setz sie zusammen.
Ihre Frage als Beispiel So verwenden, würde ich das Tun tun:
Problem 1:
- I have an array of objects which are ingredients.
- array_of_objects = []
- Each ingredient has amount and name.
- the fact that ingredients have an amount and name makes me think of a key value object. So use a hash maybe?
- one_ingredient = {}
- I need a way to key track of an ingredient by name so add key name and set its value.
one_ingredient[:name] = "apple"
one_ingredient[:amount] = 2
- I need to put this ingredient into the array_of_objects
- array_of_objects.push one_ingredient
- this returns a data structure that looks like this:
[ {name: "apple, amount: 2} ]
Können Sie sehen, was los ist? Das nächste, was Sie tun möchten, ist in den Klassen Array
und Hash
in Ruby nachzusehen, wie Sie Datenstrukturen manipulieren können. Denken Sie daran, wie ich eine Array
und/oder eine Hash
iterieren.
Zum Beispiel, schauen wir uns each
Methode in Rubys Array
Klasse. Wenn Sie auf den Link klicken, sehen Sie, dass Sie durch ein Array iterieren können, indem Sie alle darauf aufrufen und so auf Objekte innerhalb des Arrays zugreifen. So können wir so etwas tun:
array_of_objects.each do |object|
# each yields to a block and inside the block you have access
# to the object that has been yielded to each. Basically, if
# you use `pry` or debugger you can stop your code here, inspect
# your object, and also see what methods you can call on your
# object.
# since your object is a hash, you should try calling `each` on
# it. I believe Ruby Hashes have an each method - check to be
# sure. Then play around and see how you can access keys and
# values in a hash, and change their respective values.
end
Sie können mit einfachen Methoden wie each
oder each_with_key
starten. Spiel mit denen herum.
Sobald Sie das herausgefunden haben, dann können Sie anfangen zu denken, eine class
zu bauen, die all diese Konzepte zusammenbringt. Wenn Sie nicht durch einen Schritt denken können, können Sie versuchen, erneut auf Stackoverflow zu fragen, aber sehr spezifisch sein (und ich weiß, dass das schwierig ist, wenn man mit einer Sprache nicht vertraut ist, aber versuche einfach das Problem zu beschreiben Englisch).
Hoffe, das hilft. Viel Glück :)
Vielleicht ist dieses Problem zu groß für Sie. Hast du etwas Kleineres und Einfacheres versucht? –
Wie sonst kann ich das angehen? Das ist meine Aufgabe. Ich weiß ein oder zwei Dinge über Programmierung, ich muss Ruby dafür verwenden, was im Allgemeinen nicht meine erste Wahl wäre ... – cAMPy
Wenn ich du wäre, würde ich jemanden dafür bezahlen, dass er die Sache für mich programmiert. Und dann beantworte meine Fragen zum Code (damit ich später meinen Auftrag verteidigen kann). –