[chuck-users] variable of type function

Spencer Salazar ssalazar at princeton.edu
Sun Jul 16 20:54:37 EDT 2006


Hey Atte,
I dont think its possible to store references to functions, or  
function pointers (a four letter word these days :P ), but you can  
achieve something very similar with objects and polymorphism.   
Essentially, you encapsulate your function inside a class and then  
extend that class as necessary when you want to make a new function  
to refer to.  As a trivial example:

class F_int_void
{
	fun int f() { return 0; }
}

class myFunc extends F_int_void
{
	fun int f() { return 1; }
}

class myOtherFunc extends F_int_void
{
	fun int f() { return 2; }
}


F_int_void @ fiv;

F_int_void a;
a @=> fiv;
<<< fiv.f(), "" >>>;

myFunc b;
b @=> fiv;
<<< fiv.f(), "" >>>;

myOtherFunc c;
c @=> fiv;
<<< fiv.f(), "" >>>;

spencer

On Jul 16, 2006, at 9:29 AM, Atte André Jensen wrote:

> Atte André Jensen wrote:
>> Hi
>>
>> Is it possible to have a variable of type function?
>
> Or clearer, more correctly put: "Is it possible to store the reference
> to a function in a variable?"
>
> I'd like to do something like this:
>
> class test{
>      f function;
>
>      fun void set(function new_f){
> 	f @=> new_f;
>      }
>
>      fun void print(){
> 	f();
>      }
>
> }
>
> fun void print_a(){
>      <<<"a">>>;
> }
>
> fun void print_b(){
>      <<<"b">>>;
> }
>
> test c;
> c.set(print_a);
> c.f();
> //should print "a";
>
> c.set(print_b);
> c.f();
> //should print "b";
>
> -- 
> peace, love & harmony
> Atte
>
> http://www.atte.dk      | quartet:      http://www.anagrammer.dk
> http://www.atte.dk/gps  | compositions: http://www.atte.dk/ 
> compositions
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users



More information about the chuck-users mailing list