别名Aliase为现有名称提供了备用名称,别名的语法如下所示。
alias new_name=existing_name;
以下是较旧的语法,以防万一您引用一些较旧的格式示例,强烈建议不要使用此方法。
alias existing_name new_name;
表达式还有另一种语法,下面给出了该语法,在该语法中,我们可以直接使用别名而不是表达式。
alias expression alias_name ;
下面显示了一个使用别名alise的简单示例,该示例使用提供类型转换函数的std.conv标头。
import std.stdio; import std.conv:to; alias to!(string) toString; void main() { int a=10; string s="Test"~toString(a); writeln(s); }
编译并执行上述代码后,将产生以下输出-
Test10
在上面的示例中,我们没有使用to!string(a),而是将其分配给别名toString,以使其更方便和更易于理解。
让我们看另一个示例,在该示例中,我们可以为元组设置别名。
import std.stdio; import std.typetuple; alias TypeTuple!(int, long) TL; void method1(TL tl) { writeln(tl[0],"\t", tl[1] ); } void main() { method1(5, 6L); }
编译并执行上述代码后,将产生以下输出-
5 6
在上面的示例中,将元组类型分配给了别名变量,它简化了方法定义和变量的访问。当我们尝试重用此类元组时,这种访问方式甚至更有用。
很多时候,我们可能会定义需要在整个应用程序中使用的通用数据类型,为了避免这种冲突,我们经常将类型用作数据类型。一个简单的如下所示。
import std.stdio; alias int myAppNumber; alias string myAppString; void main() { myAppNumber i=10; myAppString s="LEARNFK.COM"; writeln(i,s); }
编译并执行上述代码后,将产生以下输出-
10LEARNFK.COM
通常需要在子类中访问超类的变量,这可以通过别名来实现,一个简单的如下所示。
import std.stdio; class Shape { int area; } class Square : Shape { string name() const @property { return "Square"; } alias Shape.area squareArea; } void main() { auto square=new Square; square.squareArea=42; writeln(square.name); writeln(square.squareArea); }
编译并执行上述代码后,将产生以下输出-
Square 42
别名aliase提供了用户定义类型的自动类型转换的函数,语法如下所示。
alias member_variable_or_member_function this;
下面显示一个示例,以显示别名this的函数。
import std.stdio; struct Rectangle { long length; long breadth; double value() const @property { return cast(double) length * breadth; } alias value this; } double volume(double rectangle, double height) { return rectangle * height; } void main() { auto rectangle=Rectangle(2, 3); writeln(volume(rectangle, 5)); }
在上面的示例中,您可以看到在此方法的别名帮助下将struct矩形转换为double值,编译并执行上述代码后,将产生以下输出-
30
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
HarmonyOS快速入门与实战 -〔QCon+案例研习社〕