void fn() @safe {
() @trusted { x = new int; }();//安全了?
*x = 10; // 错误,不能在`@安全`代码中访问`@系统`变量
}
//x为外部
但,不仅是上面,还可这样:
extern int* x; // 推导为@system
@system bool initializedX = false;
@trusted void safeX(int* value)
{
x = value;
initializedX = true;
}
@trusted int* safeX()
in (initializedX)
{
return x;
}
@safe void fn()
{
safeX = new int;
*safeX = 10;
}
用@trusted
包装接口.