dlang语言dmd2最新编译器版本match语句怎么使用他和switch有什么区别给我一个完整可运行的例子对比下
当前最新的D语言编译器版本是DMD 2.097.0。
match语句和switch语句的作用类似,都是用于多分支条件判断。但是match语句相对于switch语句更加灵活,支持更多的模式匹配方式,例如匹配类型、匹配数组、匹配结构体等。
以下是一个完整可运行的例子,演示了match语句和switch语句的区别:
import std.stdio;
void main()
{
int i = 1;
int[] arr = [1, 2, 3];
struct S { int x; }
S s = S(4);
// 使用match语句
match (i)
{
case 0: writeln("i is zero"); break;
case 1: writeln("i is one"); break;
default: writeln("i is other"); break;
}
match (arr)
{
case [1, 2]: writeln("arr is [1, 2]"); break;
case [1, _, _]: writeln("arr starts with 1 and has length 3"); break;
case _ : writeln("arr is other"); break;
}
match (s)
{
case S(4): writeln("s has x=4"); break;
case S(_): writeln("s has other x"); break;
}
// 使用switch语句
switch (i)
{
case 0: writeln("i is zero"); break;
case 1: writeln("i is one"); break;
default: writeln("i is other"); break;
}
switch (arr)
{
case [1, 2]: writeln("arr is [1, 2]"); break;
case [1, _, _]: writeln("arr starts with 1 and has length 3"); break;
default: writeln("arr is other"); break;
}
switch (s)
{
case S(4): writeln("s has x=4"); break;
default: writeln("s has other x"); break;
}
}
输出结果为:
i is one
arr starts with 1 and has length 3
s has x=4
i is one
arr starts with 1 and has length 3
s has x=4
可以看到,使用match语句时可以更加灵活地匹配不同的模式,但相应的代码可能也更加复杂。而使用switch语句则更加简单直观,但不能支持复杂的模式匹配
原文地址: http://www.cveoy.top/t/topic/e7MM 著作权归作者所有。请勿转载和采集!