我正在学习D并且已经看到了很多像这样的代码:
ushort x = to!ushort(args[1]);
Run Code Online (Sandbox Code Playgroud)
我认为这蒙上args[1]到ushort,但是这是什么之间的区别cast(ushort)?
编辑:感叹号运算符还有其他用途吗?
Meh*_*dad 34
在D中,
to!ushort(args[1])
Run Code Online (Sandbox Code Playgroud)
是模板实例化的简写
to!(ushort)(args[1])
Run Code Online (Sandbox Code Playgroud)
和类似的
to<ushort>(args[1])
Run Code Online (Sandbox Code Playgroud)
在C++/Java/C#等语言中.
感叹号是要指出它不是常规参数,而是模板参数.
记法也不能使用角括号,因为这些都是可笑很难正确地分析了编译器(他们所做的语法很上下文敏感的),这使得它更加困难,以实现正确的编译器.有关详细信息,请参见此处
我所知道的唯一其他用途就是一元'不'操作(例如false == !true)......我现在想不出任何其他用途.
关于演员:
cast(ushort)是一个未经检查的强制转换,因此如果该值超出范围,它将不会抛出异常.
to!ushort()是一个经过检查的强制转换,因此如果该值超出范围,则会抛出异常.