【发布时间】:2013-11-24 13:40:12
【问题描述】:
为什么我不能在@safe 函数中将可变变量转换为不可变值?另外,有没有解决方法?
@safe pure immutable(char[][char[]]) getNameValuePair {
immutable(char[])[immutable(char[])] pair;
// logics filling the pair here
return cast(immutable(char[][char[]])) pair;
}
这段代码会导致编译错误:
错误:安全代码中不允许从 immutable(char[])[immutable(char[])] 转换为 immutable(char[][const(char)[]])
当我执行return pair.idup 时,我收到错误:no property 'idup' for type 'immutable(char[])[immutable(char[])]'。
【问题讨论】:
-
请提供一个你正在尝试做的例子。另请阅读:dlang.org/const3.html。尤其是最后一个例子,作者将可变参数转换为不可变参数。无论如何,这是一个很好的问题,所以+1。 :)
-
@DejanLekic 我在问题中添加了一个示例。
标签: casting d immutability