まとめ:読み取り専用テーブル
CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 23/54。
チャレンジ
簡単original を受け取り、そのテーブルの読み取り専用バージョンを返す関数 makeReadOnly を作成してください。
元のテーブルからの読み取りは許可するが、いかなる変更も禁止するメタテーブルを持つプロキシテーブルを作成します。
ロジック:
- 空のプロキシテーブルを作成する
- (読み取りを許可するために)
__indexを元のテーブルに設定したメタテーブルを作成する - (変更をブロックするために)何もしない
__newindexをメタテーブルに追加する setmetatable()を使用してメタテーブルをプロキシにアタッチする- プロキシテーブルを返す
パラメータ:
original(table): 変更から保護するテーブル
戻り値: 元のテーブルへの読み取り専用アクセスを提供するプロキシテーブル (table)
自分で試してみよう
function makeReadOnly(original)
-- ここにコードを記述してください
end