octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dispatch function


From: John W. Eaton
Subject: Re: Dispatch function
Date: Sat, 14 May 2016 12:58:53 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0

On 05/14/2016 12:38 PM, pritika malhotra wrote:
On 14 May 2016 at 21:54, Julien Bect <address@hidden> wrote:

Le 14/05/2016 17:18, pritika malhotra a écrit :

Hello! I was trying to use this given example from documentation and as this 
function is no longer available.
Then what will be the replacement of "dispatch ("sin", "spsin", "sparse 
matrix");"

Through earlier discussion, I have come to know that we can define classes. How 
can we do that?
A simple illustration if possible Or is there some other to do so.

function y = spsin (x)
    printf ("Calling spsin\n");
    fflush(stdout);
    y = spfun ("sin", x);
endfunction

dispatch ("sin", "spsin", "sparse matrix");
y0 = sin(eye(3));
y1 = sin(speye(3));


Here is the relevant section of the manual:
https://www.gnu.org/software/octave/doc/v4.0.0/Creating-a-Class.html#Creating-a-Class

I don't know if you can do it for sparse matrices...

Thanks.
Yes, I went through this manual.
So in order to use the same function I need to create class of the same name.
I just wanted to know if we have any default classes already existing in octave?

Create a directory called @double somewhere in your loadpath and define something like the following function there:

  function r = sin (a)
    if (issparse (a))
      r = ...;  ## your special definition for sparse matrices
    else
      r = builtin ('sin', a);
    endif
  endfunction

You can only overload on class name, not the specific types as reported by the typeinfo function. The specific type names like "sparse matrix" are not classes in the interpreter. The class for sparse matrices is either double or logical.

Overloading for operators is not yet implemented, so defining a function called "plus" won't overload the + operator (for example).

jwe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]