stuncloud / UWSCR

UWSC互換スクリプト実行ツール
MIT License
54 stars 5 forks source link

UObjectの添字で代入ができない #210

Closed cocco84 closed 2 months ago

cocco84 commented 2 months ago

概要

タイトルの通り

再現スクリプト

obj = @{"key":"val"}@
obj["key"] = 1 //代入エラー

再現手順

No response

回避方法

No response

備考

No response

バージョン

1.0.2

不具合発生環境

No response

stuncloud commented 2 months ago

ひとまず対応済み しかし、多次元の場合問題あり (制限事項)

obj = @{"foo": 1, "bar": {"baz": 0}}@

print obj['foo'] //1
obj['foo'] = 2
print obj['foo'] //2

print obj.bar['baz'] // 0
obj.bar['baz'] = 100
print obj.bar['baz'] // 100

print obj['bar'].baz // 100
obj['bar'].baz = 200
print obj['bar'].baz // 200

// ここまでOK

print obj['bar']['baz'] // 200
obj['bar']['baz'] = 300 // obj.bar に 300 が代入される
print obj['bar']['baz'] // 実行時エラー: 配列ではありません (300)

これは多次元配列の実装の問題で、issueはないが修正は計画済み UObjectのみでの個別対応も不可能ではないが、多次元配列実装の修正に伴いこの件も改善される見込みであるため本件では対応せず制限事項とする