[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03193] Re: Example of subclassing user-defined Ruby class in C?

From: ts <decoux@...>
Date: 2000-06-08 12:12:18 UTC
List: ruby-talk #3193
>>>>> "R" == Robert Feldt <feldt@ce.chalmers.se> writes:

R> # I want to do this in C:
R> # class Sub<Super
R> #   def inv
R> #     1.0/@a
R> #   end
R> # end

 Try something like this :

pigeon% cat sup.c
#include <ruby.h>

static VALUE
sup_inv(obj)
    VALUE obj;
{
    VALUE a = rb_ivar_get(obj, rb_intern("@a"));
    return rb_float_new(1.0 / NUM2DBL(a));
}


void Init_sup()
{
    VALUE sup_cSuper, sup_cSup;

    rb_require("Super");
    sup_cSuper = rb_const_get(rb_cObject, rb_intern("Super"));
    sup_cSup = rb_define_class_under(rb_cObject, "Sup", sup_cSuper);
    rb_define_method(sup_cSup, "inv", sup_inv, 0);
}
pigeon% 


R> # And then start ruby eval.rb and do
R> #  1. ruby> ...Write in the Super class...
R> #  2. ruby> require Sub
R> #  3. ruby> t = Sub.new(2.0)
R> #  4. ruby> t.inv
R> #     0.5
R> #     ruby>


pigeon% cat Super.rb
class Super
  def initialize(val)
    @a = val
  end
end
pigeon% 

pigeon% cat b.rb
#!/usr/bin/ruby
require 'sup'
t = Sup.new(2.0)
p t
p t.inv
pigeon%

pigeon% b.rb
#<Sup: @a=2.0>
0.5
pigeon% 


Guy Decoux

In This Thread

Prev Next