Equivalent operations on instance of Ruby class (to Java)
I'm a Java and long-time C guy trying to learn Ruby. It's a humbling
experience to say the least.
I have the following class.
class Node
@@normal
def get_normal( n )
@@normal[ :#n ]
end
def add_normal( n, value )
@@normal[ :#{n} ] = value
end
end
...and I'm trying to use it probably in a way that only a Java guy would,
but perhaps you can set me straight. (In Java I would have:
class Node
{
private Map< String, String > normal = new HashMap< String, String >();
public void addToNormal( String key, String value ) { this.normal.put(
key, value ); }
public String getNormal( String key ) { return
this.normal.get( key ); }
}
...
Node node = new Node();
node.addToNormal( "city", "New Orleans" );
System.out.println( node.getNormal( "city" );
)
Below, I think I'm trying to get "New Orleans" out of it, but it doesn't
work. (Note: On purpose I'm trying to use Ruby symbols instead of strings
for the key.)
irb(main):001:0> class Node
irb(main):002:1> @@normal
irb(main):003:1> def add_normal( n, value )
irb(main):004:2> @@normal[ :#{n} ] = value
irb(main):005:3* end
irb(main):006:3> def get_normal( n )
irb(main):007:4> @@normal[ :#n ]
irb(main):008:5* end
irb(main):009:5> end
irb(main):010:4> node = Node.new()
irb(main):011:4> node.add_normal( :city, "New Orleans" )
irb(main):012:4> puts node.get_normal
irb(main):013:4> puts node.get_normal()
In short, I get nothing out of this.
I would like to incorporate using Ruby symbols as keys in the hash, but
the most important thing I want to learn is using a Ruby class in the way
I'm using the Java class above. Or, that this is wrong-headed? If you can
spare the time, please adjust my class definition and/or what I'm trying
to do with it, or generally criticize. Thank you very much!
No comments:
Post a Comment