【仕様】オブジェクト記法とポインター逆参照の併用について

Go down

【仕様】オブジェクト記法とポインター逆参照の併用について

投稿 by miyako on 2018-05-30, 9:50 am

オブジェクト型は,一種の参照型です。代入やメソッドに対する受け渡しをした場合,値のコピーが作成されるのではなく,むしろ,同じ値に対する参照のコピーが作られます。たとえば,ポインターを使用しなくても,下記のようなことができます。

例:

$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

投稿数 : 281
登録日 : 2016/07/05

トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可