【发布时间】:2014-06-16 18:29:32
【问题描述】:
最近在这里讨论了const 在 D 中的位置(函数名称的右侧或左侧等)有多么奇怪。
现在我想知道,函数参数中ref const X是否与const ref X相同?
两个版本都在我的测试项目中编译,但我想要确认
【问题讨论】:
最近在这里讨论了const 在 D 中的位置(函数名称的右侧或左侧等)有多么奇怪。
现在我想知道,函数参数中ref const X是否与const ref X相同?
两个版本都在我的测试项目中编译,但我想要确认
【问题讨论】:
仅当您需要使用括号时,顺序才重要。
void foo(ref const int* x) {...}
与
相同void foo(const ref int* x) {...}
但是,如果你想要const(int)*,那么你将不得不这样做
void foo(ref const(int)* x) {...}
因为没有办法将ref 放在const 的右侧,并在其中加上括号。
当不是语法问题时,我知道属性顺序对参数、其他类型的变量或返回类型很重要的唯一情况是auto ref,因为auto ref 本质上是一个属性由两个词组成,而不是两个独立的属性都影响符号。在所有其他情况下,顺序无关紧要。并且顺序对功能属性也无关紧要。只是函数签名位的整个左侧与右侧是排序问题。
【讨论】:
const ref(int)[] ?因为这是你唯一没有考虑过的事情 ;-)
ref 放在右侧。他们选择const,而不是ref。