From: Abder-rahman Ali on 13 Jul 2010 04:40 I'm trying to write a script that lists ONLY the keys in a hash as follows: http://pastie.org/private/1ruahb5w05ihsloqwmqeng The case is that when I run the script, I get the following: NameAbder-Rahman Ali Age26 While, I'm intending to get Name Age What am I missing in the script? Thanks. -- Posted via http://www.ruby-forum.com/.
From: Stefano Crocco on 13 Jul 2010 04:56 On Tuesday 13 July 2010, Abder-rahman Ali wrote: > |I'm trying to write a script that lists ONLY the keys in a hash as > |follows: http://pastie.org/private/1ruahb5w05ihsloqwmqeng > | > |The case is that when I run the script, I get the following: > | > |NameAbder-Rahman Ali > |Age26 > | > |While, I'm intending to get > | > |Name > |Age > | > |What am I missing in the script? > | > |Thanks. As you can see from the documentation (for example, with ri Hash#each), Hash#each yields two arguments to the block: the key and the corresponding value. Since your block only takes one argument, ruby puts both in an array, whose to_s method produces a string with the two elements one after the other. If you only want the key, you can use each_key rather than each, since this will only pass the block the keys: personal_information.each_key{|k| puts k} If you want to use each (but you don't need to in your example), you can have the block take two parameters and only use the first (the key): personal_information.each{|key, val| puts key} or have the block take a single argument (which will be an array) and use only the first entry of the array personal_information.each{|i| puts i[0]} I hope this helps Stefano
From: botp on 13 Jul 2010 04:56 On Tue, Jul 13, 2010 at 4:40 PM, Abder-rahman Ali <abder.rahman.ali(a)gmail.com> wrote: > What am I missing in the script? the fun :) > personal_information.each {|key| p key} ["Name", "Abder-Rahman Ali"] ["Age", "26"] > personal_information.each {|key| p key.first} "Name" "Age" > personal_information.each_key {|key| p key} "Name" "Age" > personal_information.each_value {|key| p key} "Abder-Rahman Ali" "26" > personal_information.each {|key,value| p key} "Name" "Age" > personal_information.each {|key,value| p value} "Abder-Rahman Ali" "26" kind regards -botp
From: Peter Hickman on 13 Jul 2010 05:01 If you want the keys only you can do this "personal_information.keys.each do |key|" or "personal_information.each_key do |key|" This, however, "personal_information.each do |key|" returns each element of the hash as an array in the form [key, value] Look here for the documentation ( http://www.ruby-doc.org/core/classes/Hash.html ), in fact this should be the first place you look when you have a problem.
From: Abder-Rahman Ali on 13 Jul 2010 05:21 Thanks a lot all for your replies. It really helps. -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: Cheap Wholesale Chanel Boots (free shipping) Next: Why do I get undefined method? |