[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [classdef] Can someone test this for me?
From: |
Ben Abbott |
Subject: |
Re: [classdef] Can someone test this for me? |
Date: |
Tue, 15 Oct 2013 22:18:52 -0400 |
On Oct 15, 2013, at 10:11 PM, Michael Goffioul wrote:
> On Tue, Oct 15, 2013 at 10:04 PM, Ben Abbott <address@hidden> wrote:
>
> On Oct 15, 2013, at 8:53 PM, Michael Goffioul wrote:
>
> > On Tue, Oct 15, 2013 at 6:38 PM, Michael Goffioul <address@hidden> wrote:
> > On Tue, Oct 15, 2013 at 2:58 PM, Michael Goffioul <address@hidden> wrote:
> > On Tue, Oct 15, 2013 at 2:06 PM, Серёжа Плотников <address@hidden> wrote:
> > New ML Session:
> >
> > >> x = classderiv
> > x =
> > classderiv with no properties.
> > >> x.fun
> > ans =
> > 0
> > >> addpath a
> > >> x.fun
> > ans =
> > 0
> > >> y = classderiv
> > y =
> > classderiv with no properties.
> > >> y.fun
> > ans =
> > 0
> >
> > Thank you. I appreciate your help. Those results are not exactly those I
> > expected, so I'll ask you to run a few more tests.
> >
> > Can you re-run the session above, but start with addpath, that is:
> >
> > addpath a
> > x = classderiv
> > x.fun
> >
> > Then edit classbase.m and remove the "Sealed" attribute and run the 2
> > sessions (make sure to restart Matlab between each session);
> >
> > x = classderiv
> > x.fun
> > addpath a
> > x.fun
> > y = classderiv
> > y.fun
> >
> > addpath a
> > x = classderiv
> > x.fun
> >
> > Depending on the results, I may ask you (or if anyone else wants to do it)
> > to run some more tests.
> >
> > Can anybody run these tests for me? That would help clearing out a few gray
> > zones.
> >
> > Carne Draug has kindly run the test on IRC for me. There's still one thing
> > I'd like to have tested to confirm my suspicion.
> >
> > Consider the following file/directory structure (assuming "a" and "b" are
> > not automatically in Matlab path):
> >
> > a/classbase.m:
> > classdef classbase
> > methods
> > function y = fun (obj)
> > y = 0;
> > end
> > end
> > end
> >
> > a/@classderiv/classderiv.m:
> > classdef classderiv < classbase
> > end
> >
> > a/@classderiv/fun.m:
> > function y = fun (obj)
> > y = 1;
> > end
> >
> > b/@classderiv/fun2.m:
> > function y = fun2 (obj)
> > y = 2;
> > end
> >
> > Then at Matlab prompt:
> >
> > addpath b
> > addpath a
> > x = classderiv
> > x.fun
> > x.fun2
> >
> > Thanks,
> > Michael.
>
> x =
>
> classderiv with no properties.
>
>
> ans =
>
> 1
>
> No appropriate method, property, or field fun2 for class classderiv.
>
> Thanks, Ben.
>
> So the bottom-line seems to be that for classdef classes defined in @-folder,
> Matlab only looks for methods-defined-in-external-files in the @-directory
> where the classdef m-file is located. This is rather different than old-style
> classes, where methods can be spread among various @-folders, and the
> existence of methods is then sensitive to the path.
>
> Ben, could you also try the other method-call syntax, to check whether the
> result is the same (I sincerely hope it is...):
>
> fun(x)
> fun2(x)
>
> Thanks,
> Michael.
Sure ...
fun(x)
ans =
1
fun2(x)
Undefined function 'fun2' for input arguments of type 'classderiv'.
Ben
- [classdef] Can someone test this for me?, Michael Goffioul, 2013/10/15
- Re: [classdef] Can someone test this for me?, Серёжа Плотников, 2013/10/15
- Re: [classdef] Can someone test this for me?, Michael Goffioul, 2013/10/15
- Re: [classdef] Can someone test this for me?, Серёжа Плотников, 2013/10/15
- Re: [classdef] Can someone test this for me?, Michael Goffioul, 2013/10/15
- Re: [classdef] Can someone test this for me?, Michael Goffioul, 2013/10/15
- Re: [classdef] Can someone test this for me?, Michael Goffioul, 2013/10/15
- Re: [classdef] Can someone test this for me?, Ben Abbott, 2013/10/15
- Re: [classdef] Can someone test this for me?, Michael Goffioul, 2013/10/15
- Re: [classdef] Can someone test this for me?,
Ben Abbott <=