[#400858] Support for multiple Inheritance by classes — Ross Konsolebox <lists@...>

Will Ruby ever support multiple inheritance through classes instead of

23 messages 2012/11/03
[#400859] Re: Support for multiple Inheritance by classes — Arlen Cuss <ar@...> 2012/11/03

I think I can say "no" with a fair amount of confidence.

[#400902] Re: Support for multiple Inheritance by classes — Ross Konsolebox <lists@...> 2012/11/04

Arlen Cuss wrote in post #1082618:

[#400904] Re: Support for multiple Inheritance by classes — Peter Hickman <peterhickman386@...> 2012/11/04

Even though other languages handle multiple inheritance without any

[#400865] why does UnboundMethod need to remember the class it was retrieved from (not merely owner)? — "Mean L." <lists@...>

class Base; def foo; end end

17 messages 2012/11/03

[#400914] login web page using mechanize — john smith <lists@...>

new to ruby, love the language. read programmatic programmers guide to

25 messages 2012/11/04

[#400985] How to merge two or more hashes in to one? — "Jermaine O." <lists@...>

Hi everyone.

14 messages 2012/11/06

[#401026] Site down watir-webdriver — ajay paswan <lists@...>

Whenever a site is down it keeps on looking for it for sometime and

14 messages 2012/11/07

[#401027] Closing popups watir-webdriver — ajay paswan <lists@...>

Sometimes popup comes when a link is clicked, sometimes popup comes when

14 messages 2012/11/07

[#401125] Complete newbie — "Carlos A." <lists@...>

Hey guys!

14 messages 2012/11/10

[#401161] Convert date to string — Ferdous ara <lists@...>

Hi

12 messages 2012/11/11

[#401173] question on watir — Raj pal <lists@...>

I am automating Idit application using Ruby, at one screen I can't feed

233 messages 2012/11/12

[#401191] Extending Array instances — Charles Hixson <charleshixsn@...>

I'm trying to figure out a good way to extend an Array, when the items

17 messages 2012/11/12
[#401195] Re: Extending Array instances — Brian Candler <lists@...> 2012/11/12

Charles Hixson wrote in post #1084111:

[#401200] Efficient way for comparing records between 2 large files (16 million records) — Ruby Student <ruby.student@...>

Team,

9 messages 2012/11/12

[#401274] following along with "Beginning Ruby." — Al Baker <lists@...>

I'm having trouble following along with some of the examples in this

15 messages 2012/11/15

[#401279] Question on exceptions — Justin Gamble <lists@...>

Hello! I have a simple bank program where I have to have an exception

16 messages 2012/11/15
[#401281] Re: Question on exceptions — Justin Gamble <lists@...> 2012/11/15

What is the reason of doing the .new(...)in

[#401295] Re: Question on exceptions — Brian Candler <lists@...> 2012/11/16

Justin Gamble wrote in post #1084635:

[#401296] Re: Question on exceptions — tamouse mailing lists <tamouse.lists@...> 2012/11/16

On Fri, Nov 16, 2012 at 1:43 AM, Brian Candler <lists@ruby-forum.com> wrote:

[#401301] Alternatives to methods for large number of nested "ifs" — Philip Rhoades <phil@...>

People,

11 messages 2012/11/16

[#401336] Advice for simple client/server application — Panagiotis Atmatzidis <atma@...>

Hello,

12 messages 2012/11/17

[#401364] Metaprogramming — "Aurimas N." <lists@...>

Hello,

12 messages 2012/11/19

[#401404] "undefined method `synchronize' for #<Mutex:0xa0f5adc>" from embedded Ruby program — Graham Menhennitt <graham@...>

I'm writing a C++ program (on Centos 5 Linux) that embeds a Ruby 1.9.3

9 messages 2012/11/21

[#401422] how to increase variable inside the while loop — Ferdous ara <lists@...>

Hi, my question might be confusing as its hard for me to make it clear,

12 messages 2012/11/21

[#401451] Arrays with records as objects — Steve Tucknott <lists@...>

I am completely new to Ruby.

11 messages 2012/11/22

[#401458] working with mysql in ruby — john smith <lists@...>

i have been trying to successfully connect ruby with mysql. there are a

17 messages 2012/11/22

[#401567] click on link not working with ie #watir-webdriver — ajay paswan <lists@...>

Greetings,

12 messages 2012/11/26

[#401578] atomic statements in multithreading — ajay paswan <lists@...>

suppose I am working in multiple thread each thread runs following

10 messages 2012/11/26

[#401607] Novice: Understanding instance 'variables' and methods — Steve Tucknott <lists@...>

A question - or comment - on instance variables.

10 messages 2012/11/26

[#401644] Getting the smallest Items of an Array — "Ismail M." <lists@...>

Hello guys,

14 messages 2012/11/27

[#401655] gem problems(sigh) — Al Baker <lists@...>

i tried to make a gem and tried to build the spec file and this is what

10 messages 2012/11/28

[#401688] sorting data from a file — "Ismail M." <lists@...>

Hey guys,

16 messages 2012/11/28

[#401706] Newbie question: (free) on-line courses? — Ken D'Ambrosio <ken@...>

Hello, all. There's a bunch of free on-line training for Javascript,

11 messages 2012/11/28

I'm exploiting Ruby references

From: Nokan Emiro <uzleepito@...>
Date: 2012-11-24 10:39:30 UTC
List: ruby-talk #401516
Hi,

I think I've found a nice example that shows the power of Ruby
usually *not* making copies of objects.  But while I was trying to
take it further, I just bumped into a limitation:  as far as I know it's
impossible to replace an object with any other and changing all
the references pointing to the new one at once.  It is possible to do
it with #replace(other_obj) only if the type of the new object is still an
Array, Hash or String.  But what if I want to change the underlying
type?


Let me explain what I'm trying to do in a more details:

I'm dealing with an equation system in my Ruby code, and
references are very useful in my case.  Suppose that we have an
equation system that always has a variable on the left hand side,
and an expression on the right hand side, and variables have maximum
one equations where they appear on the left hand side. So, it is
straightforward to represent this in a Hash, like this:

eq = {
 "k"=>12,
 "y"=>["k", :+, 1],
 "a"=>"y",
 "x"=>["y", :*, ["a", :+, "k", :+, 1]]
}


This represents the equation system

k = 12
y = k + 1
a = y
x = y * (a + k + 1)


Variables are always Strings, operators are Symbols, and compound statements
are represented by Arrays.  Now suppose that I want to substitute values in
one
equation from another.  For instance let's replace the variable "y" in the
equation
x = y * (...) with k+1 from the second equation (y = k+1):

eq['x'][0] = eq['y']


The equation system changes to this:

{
 "k"=>12,
 "y"=>["k", :+, 1],
 "a"=>"y",
 "x"=>[["k", :+, 1], :*, ["a", :+, "k", :+, 1]]
}


The wonderful thing in this is that instead of having a copy of it the
expression of k+1
it's now referenced by two equations.  The befit of this is that if I do
further substitutions
on the y = k+1 equation, I'll have the modifications in the x =... equation
too.  When we
replace "k" with it's value from the first equation:

eq['y'][0] = eq['k']           # eq['k'] is 12


we'll get this

{
 "k"=>12,
 "y"=>[12, :+, 1],
 "a"=>"y",
 "x"=>[[12, :+, 1], :*, ["a", :+, "k", :+, 1]]
}


Can you see the number 12 appering in the last equation? :)  Awesome!  It's
exactly what I
wanted to get.

So far so good.


Now let's do some simplifications here.  Everybody knows that 12+1 is 13,
so let's replace
eq['y'] with 13.  Well, the problem is, that we can't, because eq['y'] = 13
will break the
carefully built reference system between the equations.  The new value of
eq['y'] will be
13, of course, but the other references (the one from the last equation)
pointing to the
array [12, :+, 1] will still hold the old reference to the array.

There's one ugly solution however.  I can use Array#replace on eq['y'] to
replace it with
another Array, for instance with the array [13].   ([13] is an array with a
single element that is
the numbe 13)  The array [13] is not exactly 13, but very similar, and I
don't know any
better solution at the moment:

eq['y'].replace [13]


This will do the trick, but [13] is not very nice, it's like the numbe 13
in totally unnecessary
brackets:

{"k"=>12, "y"=>[13], "a"=>"y", "x"=>[[13], :*, ["a", :+, "k", :+, 1]]}


I don't want to represent 13 as [13].  What I really would love to do it to
replace an
object (in this case the array [12, :+, 1]) with any other object (in this
case the Fixnum
13) in a way that changes all the references from the old object to the new
one.  Just
like #replace does if the new object has the same type as the old one
(String, Array or
Hash).

Array#replace does not work with non-Array arguments, but it would be great
to force
it to work somehow.  Is it somehow possible?

u.

In This Thread

Prev Next