[#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

Re: Arrays with records as objects

From: tamouse mailing lists <tamouse.lists@...>
Date: 2012-11-22 16:26:42 UTC
List: ruby-talk #401461
On Thu, Nov 22, 2012 at 8:37 AM, Steve Tucknott <lists@ruby-forum.com> wrote:
> Robert
>
> The TodoItem class is as attached.
>
>
> I'm a complete novice, so I'm not sure how structures are used in Ruby -
> I had tried a simple case of '..build record...put in array' in another
> example where I built a local record and appended that to a local array,
> and then I accessed the array fields by a simple array[n].field1. So I
> stupidly assumed that the similar '@list << item_rec' would append the
> structure of item_rec in the list array.
>
> Attachments:
> http://www.ruby-forum.com/attachment/7888/TodoItem.rb

Steve,

I'm probably not understanding what you're trying to do here, but why
do you use the OpenStruct class here?

I think the question of how to access an anonymous object in an array
is still an interesting one. I think you have to give @item_rec
accessors (maybe just attr_reader? not sure). The attr_accessor's you
have set for :done, :action, and :name define instance variables
directly in TodoItem, but then you create a new object @item_rec and
assign instance variables to it. This results is your class really
having 4 instance variables, not 3, only 3 of which aren't being used:

TodoItem instance vars:
@done - not used by class
@action - not used by class
@name - not used by class
@item_rec - this is used

The object @item_rec points to has 3 instance variables:
@done
@action
@name

So, if you replace the attr_accessor line with:

attr_accessor :item_rec

Then, in your outer code, you can refer to it with the list as:

@list[0].item_rec.name

Still, unless this is an exercise in using OpenStruct, it's quite unnecessary.

Instead, you can simply do this:

 class TodoItem
    attr_accessor :done, :action, :name
    alias_method :done?, :done

    def initialize(line)
        # Create a record of state, action and name with state (done)
set to false
        # set state to undone
        @done  = false
        @action, @name   = line.split("<<>>")
	# Generally not a good idea to have object print out internal state like this
	# It can be useful for debugging, but better to define a
	# to_s method that will format it how you like it
        # STDOUT.puts "New TodoItem -  #{@item_rec}"
	# if this really is debugging info, consider using a
	# logger instead of tossing it to STDOUT
    end


    # maybe this is personal, but I'd call this state?
    # also, look at the ternary operator. the following could be written
    # @done ? "Done" : "Active"
    def state_getter
        if @done
            "Done"
        else
            "Active"
        end
    end

    # You might consider a more descriptive set of methods
    # that say what is happening, such as "complete" and "undo"
    # rather than the single method to flip the value.
    # flipping rather depends on the current state, obviously,
    # but it thus requires proper knowlege of the current
    # state to determine what to do. methods like "complete" and
    # "undo" state more clearly their intentions.
    def state_setter
        STDOUT.puts "Setter Status Was ("+@item_rec.done+") for
("+@item_rec.name+')'
        @item_rec.done = !@item_rec.done
        STDOUT.puts "Setter Status Now ("+@item_rec.done+") for
("+@item_rec.name+')'
    end

 end

In This Thread