Where is Fixnum#power! coming from?

D

Daniel Berger

Hi all,

Ruby 1.8.4

I realize there's a Fixnum#power! method defined in rational.rb, but it appears
that Fixnum has that method available to it whether or not I require
rational.rb. I looked through the Ruby source and didn't see anything.

djberge@~-710>irb
irb(main):001:0> Fixnum.instance_methods(false).grep(/power/)
=> ["rpower", "power!"]

So, where the heck is it coming from?

Thanks,

Dan
 
D

Daniel Harple

I realize there's a Fixnum#power! method defined in rational.rb,
but it appears that Fixnum has that method available to it whether
or not I require rational.rb. I looked through the Ruby source and
didn't see anything.

djberge@~-710>irb
irb(main):001:0> Fixnum.instance_methods(false).grep(/power/)
=> ["rpower", "power!"]

So, where the heck is it coming from?

$ irb -rubygems
2.power!(3) => 8
exit $ irb
2.power!(3)
NoMethodError: undefined method `power!' for 2:Fixnum
from (irb):1
from :0

Are you requiring rubygems?

-- Daniel
 
D

Daniel Berger

Daniel said:
I realize there's a Fixnum#power! method defined in rational.rb, but
it appears that Fixnum has that method available to it whether or not
I require rational.rb. I looked through the Ruby source and didn't
see anything.

djberge@~-710>irb
irb(main):001:0> Fixnum.instance_methods(false).grep(/power/)
=> ["rpower", "power!"]

So, where the heck is it coming from?

$ irb -rubygems
2.power!(3) => 8
exit $ irb
2.power!(3)
NoMethodError: undefined method `power!' for 2:Fixnum
from (irb):1
from :0

Are you requiring rubygems?

-- Daniel

Aha! I'm not explicitly require'ing it, but my $RUBYOPT was set. Once I unset
it, I got the expected error.

Thanks,

Dan
 
M

Marcin Mielżyński

Daniel said:
Hi all,

Ruby 1.8.4

I realize there's a Fixnum#power! method defined in rational.rb, but it
appears that Fixnum has that method available to it whether or not I
require rational.rb. I looked through the Ruby source and didn't see
anything.


numeric.c:
flo_pow(x, y)...
fix_pow(x, y)...

and then:
rb_define_method(rb_cFixnum, "**", fix_pow, 1);
rb_define_method(rb_cFloat, "**", flo_pow, 1);

and then in rational.rb:

class Fixnum
alias power! **
end

are You sure irb doesnt use rational.rb ?

lopex
 
J

Jim Weirich

Daniel said:
Aha! I'm not explicitly require'ing it, but my $RUBYOPT was set. Once
I unset
it, I got the expected error.

FYI:

RubyGems uses time.rb
time.rb uses parsedate.rb
parsedate.rb uses date/format.rb
date/format.rb uses rational.rb
 

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

Forum statistics

Threads
474,204
Messages
2,571,062
Members
47,669
Latest member
johnmaxwell

Latest Threads

Top