Simple mix-in example

Hi,

can we consider this is a mix-in newbie example ? We are giving a new
feature to method > on our Mixin class.

class Mixin
  def initialize(a)
    @a = a
  end
  def >(arg)
    puts "Yep!" if @a > arg
  end
end

test = Mixin.new(3)
test > 1 # -> Yep!
test.> 1 # -> Yep!
test.>(1) # -> Yep!
puts "Yep, too!" if 2 > 1 # -> Yep, too!
puts "not now!" if teste < 1 # -> *

* undefined method `<' for #<Mixin:0xb7d35858 @a=3> (NoMethodError)

Works as expected. Thanks,

···

--
pedro mg
ruby 1.8.4 (2005-12-24) [i486-linux]
irb 0.9.5(05/04/13)
Linux xubuntu 2.6.17-10-generic #2 SMP i686 GNU/Linux

I wouldn't call it Mixin, that could give some conflict with the concept of
mixins (i.e. modules)
maybe something like that:

class Compare
  attr_accessor :a

  def initialize a
    @a = a
  end

  def > arg
    puts "Yep!" if @a > arg
  end
end

^manveru

···

On Tuesday 07 November 2006 09:35, pedro mg wrote:

Hi,

can we consider this is a mix-in newbie example ? We are giving a new
feature to method > on our Mixin class.

class Mixin
  def initialize(a)
    @a = a
  end
  def >(arg)
    puts "Yep!" if @a > arg
  end
end

test = Mixin.new(3)
test > 1 # -> Yep!
test.> 1 # -> Yep!
test.>(1) # -> Yep!
puts "Yep, too!" if 2 > 1 # -> Yep, too!
puts "not now!" if teste < 1 # -> *

* undefined method `<' for #<Mixin:0xb7d35858 @a=3> (NoMethodError)

Works as expected. Thanks,

Yuck.

if test > 1
  puts "Yes"
else
  puts "No"
end

will print out
Yep!
No

You need to define the > operator as follows:
   def >(arg)
     puts "Yep!" if @a > arg
     @a > arg
   end
so that it returns a proper value

···

On Tue, 07 Nov 2006 00:33:00 +0000, pedro mg wrote:

Hi,

can we consider this is a mix-in newbie example ? We are giving a new
feature to method > on our Mixin class.

class Mixin
  def initialize(a)
    @a = a
  end
  def >(arg)
    puts "Yep!" if @a > arg
  end
end

test = Mixin.new(3)
test > 1 # -> Yep!
test.> 1 # -> Yep!
test.>(1) # -> Yep!
puts "Yep, too!" if 2 > 1 # -> Yep, too!
puts "not now!" if teste < 1 # -> *

* undefined method `<' for #<Mixin:0xb7d35858 @a=3> (NoMethodError)

Works as expected. Thanks,

--
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/

Thanks. Done :wink:

···

Em Tue, 07 Nov 2006 09:45:12 +0900, Michael Fellinger escreveu:

class Compare
  attr_accessor :a

  def initialize a
    @a = a
  end

  def > arg
    puts "Yep!" if @a > arg
  end
end

--
pedro mg
ruby 1.8.4 (2005-12-24) [i486-linux]
irb 0.9.5(05/04/13)
Linux xubuntu 2.6.17-10-generic #2 SMP i686 GNU/Linux

if test > 1
  puts "Yes"
else
  puts "No"
end

thanks, this was really just a very simple test in wich i controled the
values.

You need to define the > operator as follows:
   def >(arg)
     puts "Yep!" if @a > arg
     @a > arg
   end
so that it returns a proper value

i didn't even wanted a return value, but you're right, even the
simple examples look better with a little more effort :wink:

···

Em Tue, 07 Nov 2006 04:39:06 +0000, Ken Bloom escreveu:

--
pedro mg
ruby 1.8.4 (2005-12-24) [i486-linux]
irb 0.9.5(05/04/13)
Linux xubuntu 2.6.17-10-generic #2 SMP i686 GNU/Linux