not sure what is wrong. strange error

J

Junkone

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
 
V

Vincent Fourmond

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++ ;-) !

Vince
 
H

Hugh Sasse

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
 
N

Nathan Smith

On Sat, 16 Sep 2006, Vincent Fourmond wrote:

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++ ;-) !

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
 
G

Gregory Brown

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

====

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.
=> "bar"
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top