|
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 endfunctionYou 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
[Prev in Thread] | Current Thread | [Next in Thread] |