[#377882] remove array bracket — Kamarulnizam Rahim <niezam54@...>

Hi when i run my script, the output is as followed:

18 messages 2011/02/02

[#378046] Setter method for Hash value — Rolf Pedersen <rolfhsp@...>

Hi

20 messages 2011/02/03
[#378052] Re: Setter method for Hash value — Brian Candler <b.candler@...> 2011/02/03

Rolf Pedersen wrote in post #979431:

[#378056] Re: Setter method for Hash value — Rolf Pedersen <rolfhsp@...> 2011/02/03

Hi Brian (and others who have contributed with suggestions along the same

[#378144] C extension: How to check if a VALUE is still alive (not being GC'ed)? — Iñaki Baz Castillo <ibc@...>

Hi, I'm coding an async DNS resolver for EventMachine based on udns (a

13 messages 2011/02/05
[#378171] Re: C extension: How to check if a VALUE is still alive (not being GC'ed)? — Tony Arcieri <tony.arcieri@...> 2011/02/06

On Sat, Feb 5, 2011 at 4:02 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote:

[#378179] Re: C extension: How to check if a VALUE is still alive (not being GC'ed)? — Iñaki Baz Castillo <ibc@...> 2011/02/06

2011/2/6 Tony Arcieri <tony.arcieri@medioh.com>:

[#378199] Choosing an office suite — Hilary Bailey <my77elephants@...>

I am trying to decide which office suite to choose from. The only

30 messages 2011/02/07
[#378229] Re: Choosing an office suite — Phillip Gawlowski <cmdjackryan@...> 2011/02/07

On Mon, Feb 7, 2011 at 11:15 AM, Hilary Bailey <my77elephants@gmail.com> wrote:

[#378202] making hash key from arrays — Arihan Sinha <arihan_sinha@...>

Hi All,

11 messages 2011/02/07

[#378254] "permission denied" happening too often — Peter Bailey <pbailey@...>

Hello,

15 messages 2011/02/08
[#378256] Re: "permission denied" happening too often — Anurag Priyam <anurag08priyam@...> 2011/02/08

> I've got Ruby scripts that have been working fine for years now. But,

[#378257] Re: "permission denied" happening too often — Markus Schirp <mbj@...> 2011/02/08

You can also try to strace your script. In the logs you'll find the system

[#378259] Re: "permission denied" happening too often — Peter Bailey <pbailey@...> 2011/02/08

Markus Schirp wrote in post #980289:

[#378307] undefined class/module YAML::PrivateType - Error — "Priya D." <dharsininitt@...>

Hi,

11 messages 2011/02/09

[#378341] System calls with ` in parameters — "Gerad S." <geradstemke@...>

Hi All,

12 messages 2011/02/09

[#378618] Defining class methods — Tony Arcieri <tony.arcieri@...>

It seems there are 3 ways of defining class methods (at least in common

12 messages 2011/02/16

[#378685] LiveAST: a pure Ruby 1.9.2 library obtaining live abstract syntax trees — "James M. Lawrence" <quixoticsycophant@...>

= LiveAST

13 messages 2011/02/18

[#378753] posix_mq : Problem installing on HPUX — Tadeusz Bochan <tad.bochan@...>

Hello,

13 messages 2011/02/20

[#378890] a, b = Array.new(2).map!{|x| data.dup} — Stefan Salewski <mail@...>

I think I can replace this code

19 messages 2011/02/23
[#378892] Re: a, b = Array.new(2).map!{|x| data.dup} — niklas | brueckenschlaeger <niklas@...> 2011/02/23

Are you sure you can't rework your code to *not* copy data 5x? I assume

[#378899] Re: a, b = Array.new(2).map!{|x| data.dup} — Stefan Salewski <mail@...> 2011/02/23

On Thu, 2011-02-24 at 07:00 +0900, niklas | brueckenschlaeger wrote:

[#378941] Automatic question generator libs in Ruby Language — Sniper Abandon <sathish.salem.1984@...>

is there any Automatic question generator libraries in Ruby Language ?

20 messages 2011/02/24
[#379058] Re: Automatic question generator libs in Ruby Language — Sniper Abandon <sathish.salem.1984@...> 2011/02/27

suppose if i have a paragraph (arround 250 words)

[#379172] Re: Automatic question generator libs in Ruby Language — Shadowfirebird <shadowfirebird@...> 2011/03/01

> i want to get all the possible question from that paragraph

[#379174] Re: Automatic question generator libs in Ruby Language — Peter Zotov <whitequark@...> 2011/03/01

On Tue, 1 Mar 2011 19:31:36 +0900, Shadowfirebird wrote:

[#379175] Re: Automatic question generator libs in Ruby Language — Adam Prescott <mentionuse@...> 2011/03/01

On Tue, Mar 1, 2011 at 10:55 AM, Peter Zotov <whitequark@whitequark.org>wrote:

[#379177] Re: Automatic question generator libs in Ruby Language — Peter Zotov <whitequark@...> 2011/03/01

On Tue, 1 Mar 2011 20:02:13 +0900, Adam Prescott wrote:

[#379179] Re: Automatic question generator libs in Ruby Language — Adam Prescott <mentionuse@...> 2011/03/01

On Tue, Mar 1, 2011 at 12:28 PM, Peter Zotov <whitequark@whitequark.org>wrote:

[#378949] why is $1 in a grep() equal to nil? — 7stud -- <bbxx789_05ss@...>

class DataSource

16 messages 2011/02/24
[#378953] Re: why is $1 in a grep() equal to nil? — Eric Christopherson <echristopherson@...> 2011/02/25

On Thu, Feb 24, 2011 at 2:59 PM, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#378958] parsing rule for this code? — 7stud -- <bbxx789_05ss@...>

1)

11 messages 2011/02/25

[#379000] Symbol#to_proc helping out with #select to beat Scala-s solution — Jarmo Pertman <jarmo.p@...>

Hey!

9 messages 2011/02/25

[#379074] finding a tag in a binary file — rob stanton <tnotnats@...>

I have a binary file in which I'd like to find multiple strings of 10

12 messages 2011/02/27

Re: Ruby Hash Keys and Related Questions

From: Robert Klemme <shortcutter@...>
Date: 2011-02-23 08:25:41 UTC
List: ruby-talk #378860
On Wed, Feb 23, 2011 at 7:42 AM, Terry Michaels <cmhoward@frigidcode.com> wrote:
> I'm still a bit new to Ruby, so humor me a bit. But I discovered today
> (through trial and error) that not only can Strings, numbers, and
> symbols be keys for hashes, but also any object, or even a class name!
> Ruby is the first language I've used in which I would have even thought
> to try that, let alone it actually working:

> Anyway, this raised a few related questions in my mind:
>
> 1. If the "key" taken by hash[key]= can be any object, and the key still
> works even after it is aliased to another variable, does that mean that
> the "key" is just a reference?

Yes, in Ruby you always only ever see references.  This means, that if
you modify an instance which is used in a Hash as key the Hash likely
needs updating since the hash code of the key usually also changes
(see Hash#rehash).

> 2. If I pass in a number, say an Integer, as a key, does Ruby actually
> use the Integer? Or does it use a reference to an Integer object?
> (Numbers are objects too, right?)

Yes, everything is an object in Ruby.  There are some optimizations
internally but as a user of the language you do not see them.
Anything, and I mean _anything_, in Ruby is an object and can be
referenced by any variable.

> 3. If I am allowed to pass in a class as a key, does that mean that
> classes are objects too? If not, what exactly is being stored as the
> key?

Yes, classes are objects, too.  Classes are instances of class Class:

irb(main):002:0> String.class
=> Class
irb(main):003:0> String.class.ancestors
=> [Class, Module, Object, Kernel]
irb(main):004:0> String.kind_of? Object
=> true

There is a tad of recursion involved but you should just accept it and
not think about it too much.  Otherwise serious brain damage could be
the consequence. :-)

> 4. When I use irb, and a line returns an object, irb shows me the
> object's hexadecimal reference address (or at least, that's what it
> looks like). Is there a method one can call on an object to get that
> reference when one is not in irb? Just curious.

No, IRB shows the result of obj.inspect.  The default implementation
returns something which is related to #object_id which in turn is
derived from the address (I forgot the details):

irb(main):010:0> o=Object.new
=> #<Object:0x7ff72c5c>
irb(main):011:0> o.object_id.to_s 16
=> "3ffb962e"
irb(main):012:0> 0x7ff72c5c / 0x3ffb962e
=> 2

Anyway, since you cannot access memory directly from Ruby it's
worthless to know the memory address.  And in other Ruby
implementations (e.g. JRuby) that memory address may even change.
Forget C (until you write your first Ruby extension).

Ah, and one note: Ruby's Hash will apply special treatment to String
keys if they are not frozen.  In this case the key is copied so you
can safely modify the key you passed:

irb(main):015:0> h={}
=> {}
irb(main):016:0> k="foo"
=> "foo"
irb(main):017:0> h[k]="x"
=> "x"
irb(main):018:0> h
=> {"foo"=>"x"}
irb(main):019:0> k << "_modified"
=> "foo_modified"
irb(main):020:0> k
=> "foo_modified"
irb(main):021:0> h
=> {"foo"=>"x"}
irb(main):022:0> k.object_id
=> 1073420300
irb(main):023:0> h.each {|k,v| puts k, k.object_id}
foo
1073420320
=> {"foo"=>"x"}

If you know you do not need to modify a String key afterwards you can
gain a few CPU cycles by freezing the String.

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread