Re: Needed return type in static method? bug or feature?

2016-03-08 Thread Jonathan M Davis via Digitalmars-d-learn
On Tuesday, March 08, 2016 14:56:06 Antonio Corbi via Digitalmars-d-learn 
wrote:
> On Tuesday, 8 March 2016 at 14:13:17 UTC, Adam D. Ruppe wrote:
> > On Tuesday, 8 March 2016 at 13:40:06 UTC, Antonio Corbi wrote:
> >> Is it a feature or a bug?
> >
> > It is allowed because the "auto" keyword doesn't actually
> > required for auto functions (or variables), what you need is
> > any one of the storage classes.
> >
> > Those include static, auto, const, immutable, even pure.
> >
> > If any of them are present, the compiler knows you are writing
> > a function or declaring a variable and will infer the type.
>
> Thank's Adam!.
>
> I had figured out something like this but I couldn't find
> anything in the docs
> (http://dlang.org/spec/attribute.html#static), moreover, the
> example there:
> --8><-
> class Foo
> {
>  static int bar() { return 6; }
> ...
> --8><-
>
> does mention the return type, that's what confused me.

The return type is optional so long as one of the keywords that indicates
that it's a variable or a function is there, so you can choose to put it or
not. In most cases, I think that folks put the return type on functions or
use auto, but it's up to you. Where it usually comes up is enums and
variable declarations.

- Jonathan M Davis



Re: Needed return type in static method? bug or feature?

2016-03-08 Thread Antonio Corbi via Digitalmars-d-learn

On Tuesday, 8 March 2016 at 14:13:17 UTC, Adam D. Ruppe wrote:

On Tuesday, 8 March 2016 at 13:40:06 UTC, Antonio Corbi wrote:

Is it a feature or a bug?


It is allowed because the "auto" keyword doesn't actually 
required for auto functions (or variables), what you need is 
any one of the storage classes.


Those include static, auto, const, immutable, even pure.

If any of them are present, the compiler knows you are writing 
a function or declaring a variable and will infer the type.


Thank's Adam!.

I had figured out something like this but I couldn't find 
anything in the docs 
(http://dlang.org/spec/attribute.html#static), moreover, the 
example there:

--8><-
class Foo
{
static int bar() { return 6; }
...
--8><-

does mention the return type, that's what confused me.



Re: Needed return type in static method? bug or feature?

2016-03-08 Thread Adam D. Ruppe via Digitalmars-d-learn

On Tuesday, 8 March 2016 at 13:40:06 UTC, Antonio Corbi wrote:

Is it a feature or a bug?


It is allowed because the "auto" keyword doesn't actually 
required for auto functions (or variables), what you need is any 
one of the storage classes.


Those include static, auto, const, immutable, even pure.

If any of them are present, the compiler knows you are writing a 
function or declaring a variable and will infer the type.


Needed return type in static method? bug or feature?

2016-03-08 Thread Antonio Corbi via Digitalmars-d-learn

Hi all!

The following code compiles and works, but the static methods do 
not
have a return type. It also compiles and works if the appropiate 
(or auto)

return type is added to them.

-8><
import std.stdio;

class B {
int foo () { return 1; }

static sbar () { return "hi!"; }
static ibar () { return 0; }
}

void main () {
auto b = new B;
writeln (B.sbar);
writeln (B.ibar);
}
-8><
Is it a feature or a bug?

I've seen it being used in
https://github.com/gecko0307/dlib/blob/master/dlib/math/matrix.d

Thank's for your help!