【仕様】オブジェクト記法とポインター逆参照の併用について
【仕様】オブジェクト記法とポインター逆参照の併用について
オブジェクト型は,一種の参照型です。代入やメソッドに対する受け渡しをした場合,値のコピーが作成されるのではなく,むしろ,同じ値に対する参照のコピーが作られます。たとえば,ポインターを使用しなくても,下記のようなことができます。
例:
$o:=New object("a";1)
MyMethod($o)
{
C_OBJECT($1)
$o:=$1
$o.b:=2
}
//呼び出し元の$oは{"a":1, "b":2}になる
参考:
もちろん,オブジェクト型に対するポインターを使用することもできます。二重の参照型であるという点で,「ポインターに対するポインター」に少し似ているかもしれません。
オブジェクト型に対するポインターを使用する場合,文法上の例外に留意してください。
$o:=New object("a";1)
$p:=->$o
この場合,$oのプロパティ"a"に対するアクセスは,
$p->.a
と記述されるように思えるかもしれません。
しかし,コードを確定(トークナイズ)すると,ドットが消滅し,
$p->a
となります。
もちろん,
$p->["a"]
と記述することもできます。
この点はドキュメントに記載されています。
http://doc.4d.com/4Dv16R6/4D/16-R6/Using-object-notation-preview.300-3548251.ja.html
論考:http://forums.4d.com/Post/FR/24123896/1/24457083#24457083
例:
$o:=New object("a";1)
MyMethod($o)
{
C_OBJECT($1)
$o:=$1
$o.b:=2
}
//呼び出し元の$oは{"a":1, "b":2}になる
参考:
もちろん,オブジェクト型に対するポインターを使用することもできます。二重の参照型であるという点で,「ポインターに対するポインター」に少し似ているかもしれません。
オブジェクト型に対するポインターを使用する場合,文法上の例外に留意してください。
$o:=New object("a";1)
$p:=->$o
この場合,$oのプロパティ"a"に対するアクセスは,
$p->.a
と記述されるように思えるかもしれません。
しかし,コードを確定(トークナイズ)すると,ドットが消滅し,
$p->a
となります。
もちろん,
$p->["a"]
と記述することもできます。
この点はドキュメントに記載されています。
http://doc.4d.com/4Dv16R6/4D/16-R6/Using-object-notation-preview.300-3548251.ja.html
論考:http://forums.4d.com/Post/FR/24123896/1/24457083#24457083
miyako- 投稿数 : 468
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可
|
|