April 26, 2018 What's wrong with this alias? | ||||
---|---|---|---|---|
| ||||
consider this: module report; // output an error message on stderr void error(A...)(string fmt, A args) { import colorize : fg, color, cwriteln, cwritefln, cwrite; stderr.cwrite("error: ".color(fg.yellow)); cwritefln(fmt.color(fg.yellow), args); } void warning(A...)(string fmt, A args) { import colorize : fg, color, cwriteln, cwritefln, cwrite; cwrite("warning: ".color(fg.blue)); cwritefln(fmt.color(fg.blue), args); } then class C { void error(A...)(string fmt, A args) { import report : error; reportedAnyError = true; error(fmt, args); } alias warning = report.warning; } I got this: Error: undefined identifier report.warning but this works: void warning(A...)(string fmt, A args) { import report : warning; warning(fmt, args); } why alias cannot find my symbol there? |
April 26, 2018 Re: What's wrong with this alias? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dr.No | On 04/26/2018 10:56 AM, Dr.No wrote: > class C > { > > void error(A...)(string fmt, A args) > { > import report : error; > reportedAnyError = true; > error(fmt, args); > } > alias warning = report.warning; > } > > > I got this: > > Error: undefined identifier report.warning If that really is the code, you're forgetting to import report in that scope. Otherwise, that kind of alias works at least in this simple case: void foo(A...)(A a) { import std.stdio; writeln(a); } alias bar = foo; void main() { bar(42, "hello"); } Ali |
Copyright © 1999-2021 by the D Language Foundation