[#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: Setter method for Hash value

From: Brian Candler <b.candler@...>
Date: 2011-02-04 14:45:03 UTC
List: ruby-talk #378097
Rolf Pedersen wrote in post #979601:
> MyClass should have a "virtual hash property", props.
> I want to interact with props, like it was a regular hash, but under the
> hood, it should perform calls towards the external library.

Then simply return an object with those characteristics. This is Ruby, 
remember :-)

> With MyClass I should be able to to the following:
> c = MyClass.new
> (1)
> c.props  # under the hood, this will call SomeClass::get_props() and
> convert
> the response to a hash
> => {:a=>1, :b=>2, :c=>3}

So you are now saying you must return an *actual* hash at this point? 
Then that is a separate object, and any mutations made will be local to 
that hash.

> (2)
> c.props[:a]     # This should make a call to SomeClass::get_prop("a")
> => 1

No it won't, if c.props returned a Hash. So your requirements (1) and 
(2) are contradictory.

I suggest you go with option 2: return some object, which when you call 
the [] method on that object, it in turn calls SomeClass.get_prop(xxx). 
That's the "proxy" object I was talking about before.

> (3)
> c.props={:a=>"a", :b=>"b", :c=>"c"}   # This should make a call to e.g.
> SomeClass::set_props("a", "a", "b", "b", "c", "c")
> => {:a=>"a", :b=>"b", :c=>"c"}

That's easy enough. Your c object can have a props=(h) method which 
iterates over h, or turns it into an Array, and calls set_props 
accordingly.

> (4)
> c.props[:d] = "d"  # This should make a call to SomeClass::set_prop("d")
> => "d"

That's a different requirement: that the object returned by c.props have 
specific behaviour when its []= method is called, similar to (2).

However (3) and (4) are not contradictory. You can implement both if you 
wish.

> (5)
> c.props      # Again, make a vall to SomeClass::get_props(), to check
> that
> new data is stored.
> => {:a=>"a", :b=>"b", :c=>"c", :d=>"d"}

That is the same as (1), which contradicts (2).

Actually, you can have an almost-Hash, by either subclassing Hash, or by 
defining singleton methods on a Hash object. Then it can be a Hash which 
does magic things when you assign to it. This may or may not be good 
design - I try to avoid magic if possible

h = {"foo"=>1, "bar"=>2}
def h.[]=(key,val)
  puts "Hah, tricked you, you tried to set #{key} to #{val}!"
end

h
h["foo"]
h["foo"]=999

By setting an instance variable on the Hash (more magic) you can 
remember which object you want to proxy []= to.

>       class DataClass
>         @@data = {:a=>1, :b=>2, :c=>3}

Try to avoid class variables. An instance variable of the class (@data) 
would work just as well here. @@var has really strange semantics which I 
can never entirely remember, and once you've been bitten by them, you'll 
choose to use instance variables as well.

Note that an instance variable of the class is not the same as an 
instance variable of an instance of that class.

Just change @@data to @data throughout.

> (1) just returns
>       #<PropsClass:0x1418748>

Yep, it's returning that object, not a hash. You can choose between 
returning an object with Hash-like properties, or an actual Hash.

> and (3) returns
>       test_props.rb:35:in `<main>': undefined method `props=' for
> #<MyClass:0x14202d8 @props=#<PropsClass:0x14202c0>> (NoMethodError)

You simply forgot to define this method. You have:

       def props
          @props
       end

but you also need:

       def props=(val)
         # do stuff, e.g. @props.h.replace(val)
         # except you haven't made h an accessor; I suggest
         # you do, otherwise you need something ugly:
         @props.instance_variable_get(:@h).replace(val)
       end

> I don't have a method that redefines = in the PropsClass. (This method
> cannot be redefined, right?).

foo.bar = baz

is a method called "bar=", and you can define that.

B.

-- 
Posted via http://www.ruby-forum.com/.

In This Thread