Not sure what is wrong. strange error

My class declation is like this

class TorontoTraderLoader
  INDEX_SYMBOL=2
  STOCK_SYMBOL=1
  @backTestDb=['backtestBackTest', 'user','pass']

  def initialize(backTesting)
    @exchanges=@industries=@sectors=@stocksymbols=''
    @dbcon=DbAccess.new(@backTestDb)
    loadLookup
  end
  def initialize()
  @exchanges=@industries=@sectors=@stocksymbols=''

    loaddbConn
    loadLookup
  end
...
I get the following error and it is so odd
irb(main):001:0> require 'TorontoTraderLoader'
=> true
irb(main):002:0> a=TorontoTraderLoader.new('ww')
ArgumentError: wrong number of arguments (1 for 0)
        from (irb):2:in `initialize'
        from (irb):2

It does not make any sense. i have a overloaded constructor. i am not
sure why it does not call teh overloaded constructor

Hello !

  def initialize(backTesting)
    @exchanges=@industries=@sectors=@stocksymbols=''
    @dbcon=DbAccess.new(@backTestDb)
    loadLookup
  end
  def initialize()
  @exchanges=@industries=@sectors=@stocksymbols=''

    loaddbConn
    loadLookup
  end
...
I get the following error and it is so odd
irb(main):001:0> require 'TorontoTraderLoader'
=> true
irb(main):002:0> a=TorontoTraderLoader.new('ww')
ArgumentError: wrong number of arguments (1 for 0)
        from (irb):2:in `initialize'
        from (irb):2

It does not make any sense. i have a overloaded constructor. i am not
sure why it does not call teh overloaded constructor

  There is no such thing as overloading in Ruby. Your second definition
is cancelling the first one. Try to run this with ruby -w, and you'll
get a warning...

  Ruby is not C++ :wink: !

  Vince

My class declation is like this

class TorontoTraderLoader
  INDEX_SYMBOL=2
  STOCK_SYMBOL=1
  @backTestDb=['backtestBackTest', 'user','pass']

  def initialize(backTesting)
    @exchanges=@industries=@sectors=@stocksymbols=''
    @dbcon=DbAccess.new(@backTestDb)
    loadLookup
  end
  def initialize()
  @exchanges=@industries=@sectors=@stocksymbols=''

    loaddbConn
    loadLookup
  end
...
I get the following error and it is so odd
irb(main):001:0> require 'TorontoTraderLoader'
=> true
irb(main):002:0> a=TorontoTraderLoader.new('ww')
ArgumentError: wrong number of arguments (1 for 0)
        from (irb):2:in `initialize'
        from (irb):2

It does not make any sense. i have a overloaded constructor. i am not

No, you redefined it. No overloading in Ruby (because "Duck Typing")

sure why it does not call teh overloaded constructor

Maybe

  def initialize(backTesting = nil)
    @exchanges=@industries=@sectors=@stocksymbols=''
    if backTesting.nil?
      @dbcon=DbAccess.new(@backTestDb)
    else
      loaddbConn
    end
    loadLookup
  end

is more the kind of think you want, but in the first method you
don't seem to use the param backTesting anyway.

        Hugh

···

On Sat, 16 Sep 2006, Junkone wrote:

hi, see the other posts about overloading, but i'll try to help with your case

My class declation is like this

class TorontoTraderLoader
        INDEX_SYMBOL=2
        STOCK_SYMBOL=1
        @backTestDb=['backtestBackTest', 'user','pass']

        def initialize(backTesting)
                @exchanges=@industries=@sectors=@stocksymbols=''
                @dbcon=DbAccess.new(@backTestDb)
                loadLookup
        end
        def initialize()
        @exchanges=@industries=@sectors=@stocksymbols=''

                loaddbConn
                loadLookup
        end

It looks like you want to use an optional parameter

try:

def initialize(back_testing=nil)
  @exchanges = ""
  @industries = ""
  @sectors = ""
  @stock_symbols = ""
  @dbcon = back_testing ? DbAccess.new(@back_test_db) : load_db_con
   load_lookup
end

I think this will do what you'd expect it to do

new() will call load_db_con, new(true) would be calling your back_test_db

···

On 9/15/06, Junkone <junkone1@gmail.com> wrote:

====

I am a little bit concerned with the way you've organized this class,
but hopefully this will at least show three things.

1) How to use optional parameters

2) ruby_style instead of javaStyle

3) note that I split up the assignment for your instance variables?
It is because they were pointing to the same object.

a = b = "foo"

=> "foo"

a.replace "bar"

=> "bar"

b

=> "bar"

<snip>

> It does not make any sense. i have a overloaded constructor. i am not
> sure why it does not call teh overloaded constructor

  There is no such thing as overloading in Ruby. Your second definition
is cancelling the first one. Try to run this with ruby -w, and you'll
get a warning...

  Ruby is not C++ :wink: !

  Vince

It's too bad Ruby does not allow overloaded methods. It makes more sense,
IMHO, in this case to have two constructors, each of which perform two
different 'functions', rather than having if/else/case statements inside
the constructor with default arguments.

Nate

···

On Sat, 16 Sep 2006, Vincent Fourmond wrote: