Let's talk about the AS syntax really quick.
Code:
//note: code is gibberish, it doesn't do anything.
//HANDLES
void Foo(Ref@ ref) //option A:
{
@ref = @Ref.Create(); //points to a new thingy.
ref = otherRef; // now it value copies other thingy. whoops.
}
// confused yet? ...well then:
void Foo(Ref ref) //option B:
{
ref = Ref.Create(); //points to a new thingy.
ref = otherRef; // now it POINTS to other thingy instead.
}
int e = Enum::Value;
int i = A::B::Value;
int v = this.Value;
int x = Object.Value;
Link::X = x;
..confused again?
int e = Enum.Value;
int i = A.B.Value;
int v = this.Value;
int x = Object.Value;
Link.X = x;
// Current annoyance... but unlikely as part of the ZC script API. ...idk
void Foo(const int &in a, int &out b, Object &c)
{
}
//unless we allow unsafe references only "out&" or "&inout" is really useful.