# Using define\_method to create a method that takes arguments

**URL:** <https://www.ruby-forum.com/t/using-define-method-to-create-a-method-that-takes-arguments/66908>\
**Category:** Ruby\
**Created:** [August 30, 2006, 7:03am UTC](https://www.ruby-forum.com/t/using-define-method-to-create-a-method-that-takes-arguments/66908 "2006-08-30T07:03:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [August 30, 2006, 7:03am UTC](https://www.ruby-forum.com/t/using-define-method-to-create-a-method-that-takes-arguments/66908/1 "2006-08-30T07:03:14Z")

</div>

How does one use define\_method to create a method that can take  
arguments?

Is that possible?

Wes

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [August 30, 2006, 7:08am UTC](https://www.ruby-forum.com/t/using-define-method-to-create-a-method-that-takes-arguments/66908/2 "2006-08-30T07:08:05Z")

</div>

Wes G. wrote:

> How does one use define\_method to create a method that can take  
> arguments?
> 
> Is that possible?
> 
> Wes

Use a block that has arguments:

irb(main):003:0\> class \<\< self; define\_method :foo do |x, \*y| p x, y;  
end; end  
=\> #Proc:0xb7ca3f20@:3(irb)  
irb(main):004:0\> foo 1,2,3  
1  
[2, 3]  
=\> nil

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [August 30, 2006, 7:42am UTC](https://www.ruby-forum.com/t/using-define-method-to-create-a-method-that-takes-arguments/66908/3 "2006-08-30T07:42:07Z")

</div>

Wes G. wrote:

> How does one use define\_method to create a method that can take  
> arguments?
> 
> Is that possible?

#!/usr/bin/ruby -w

class A  
define\_method(:trythis) { |a,b,c| puts a,b,c }  
end

a = A.new

a.trythis(“one”,“two”,“three”)  
one  
two  
three

a.trythis()  
in `trythis’: wrong number of arguments (0 for 3) (ArgumentError)
