Default value for any type?

Hello all.

I have code:

def create_default(type)
type.new
end

But with, for example, Float, it suddenly said:

create_default(Float) #<=== undefined method `new’ for Float:Class
(NoMethodError)

Hmmm? How can I uniformly obtain default value for given class?

Victor.

On 4/14/06, Victor S. [email protected] wrote:

create_default(Float) #<=== undefined method `new’ for Float:Class
(NoMethodError)

Hmmm? How can I uniformly obtain default value for given class?

What should the default value for a Float be? What are you trying to
really do here?

There are a number of classes that you’re not going to be able to call
#new on.

-austin

create_default(Float) #<=== undefined method `new’ for Float:Class
(NoMethodError)

Hmmm? How can I uniformly obtain default value for given class?

What should the default value for a Float be? What are you trying to
really do here?

There are a number of classes that you’re not going to be able to call
#new on.

Not so long time ago I’ve been a C++ guy. There we could do:
float(); //0.0
int(); //0
…etc…

Generalized version:
template
T create_default()
{
return T();
}

//usage:
create_default(); // => 0.0
create_defaultstd::string(); // => “”

and so on. I think, argument-less constructor, creating some “default”
value, is a very useful thing.

(yes, I can define Float#default and so on for myself :wink: But I want to
know,
why?)

-austin

Austin Z. * [email protected]
* Alternate: [email protected]

Victor.

On 4/14/06, Victor S. [email protected] wrote:

create_default(Float) #<=== undefined method `new’ for Float:Class
(NoMethodError)

Hmmm? How can I uniformly obtain default value for given class?

class Float
def Float.new
0.0
end
end

Hi –

On Fri, 14 Apr 2006, Victor S. wrote:

create_default(Float) #<=== undefined method `new’ for Float:Class
Not so long time ago I’ve been a C++ guy. There we could do:

//usage:
create_default(); // => 0.0
create_defaultstd::string(); // => “”

and so on. I think, argument-less constructor, creating some “default”
value, is a very useful thing.

(yes, I can define Float#default and so on for myself :wink: But I want to know,
why?)

I guess that’s what I want to know too: why would you expect Ruby
classes to have default instances, and why would you need them too?

David


David A. Black ([email protected])
Ruby Power and Light, LLC (http://www.rubypowerandlight.com)

“Ruby for Rails” coming in PDF April 15, and in paper May 5!
http://www.manning.com/black

On Sat, 15 Apr 2006, [email protected] wrote:

I guess that’s what I want to know too: why would you expect Ruby
classes to have default instances, and why would you need them too?

s/too?/to?/ :slight_smile:

David


David A. Black ([email protected])
Ruby Power and Light, LLC (http://www.rubypowerandlight.com)

“Ruby for Rails” coming in PDF April 15, and in paper May 5!
http://www.manning.com/black

…etc…
create_defaultstd::string(); // => “”

-austin
is probably a good. one. If you can post some Ruby code that would rely
on something like this that would be great. Maybe the folks on the list
can help you find a solution for you.

Hmmm… Maybe I beginning to understand your point. The task was: before
serializing (or storing in DB) some complex class, ensure that all
fields
aren’t nil. I does some metaprogramming, so description of the fields
looked
like:

class Something
data :name, String, :default => ‘’
data :price, Float, :default => 0.0
data :quan, Fixnum, :default => 0
data :type, String, :default => ‘unknown’
data :coef, Float , :default = > 1.0

def store_in_db
self.validate!

end

def validate!
#ensure each field isn’t nil and has right type;
#set it’s value to default in other case
end
end

(I hope the code above is quite self-explaining.)
Later I saw that most of default values seems to like “empty value” of
the
corresponding type (I was C++ guy, remember). So, I want not to write
:default => … for :name, :price, :quan

But after this topic (and Austins and yours answers) I think that
overall
construction don’t looks very rubyish. Maybe, I must look for
alternatives.

Regards,
Matthew D.

Victor

Victor S. wrote:

create_default(Float) #<=== undefined method `new’ for Float:Class

}

-austin

Austin Z. * [email protected]
* Alternate: [email protected]

Victor.

Hi Victor,

I think that Austin’s question about what you are trying to accomplish
is probably a good. one. If you can post some Ruby code that would rely
on something like this that would be great. Maybe the folks on the list
can help you find a solution for you.

Regards,
Matthew D.

On 4/14/06, Victor S. [email protected] wrote:

float(); //0.0
//usage:

class Something

But after this topic (and Austins and yours answers) I think that overall
construction don’t looks very rubyish. Maybe, I must look for alternatives.

This reminds me of the Metakoans quiz, actually:
http://www.rubyquiz.com/quiz67.html

If you haven’t seen that, it may give you some ideas.

–Wilson.

This reminds me of the Metakoans quiz, actually:
http://www.rubyquiz.com/quiz67.html

If you haven’t seen that, it may give you some ideas.

Ooooooh! Looks really very interesting. Studying.
Big thanks!

–Wilson.

Victor.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs