galaxy-sixth-sensey - Vim_scriptで定数
2015/07/13
Vim_scriptで定数

Vim scriptで定数

let A = 10
lockvar A
let A = 20  " 例外

これでできるらしい。
ただし、これでできるのは「変数への書き込み禁止」であって
書き込み禁止を解除することが可能。

let A = 10
lockvar A
unlockvar A
let A = 20  " 通る

なので、強制力はないけど意味力のある変数…って感じになる。

まとめるとこう書ける。

let A = 10 | lockvar A

さらに注意として、間接的に他の辞書などを書き換え禁止できない。

let B = {'bar' : {'baz' : 30}} | lockvar B
let B.bar.baz = 40  " 通る
let C = {'hoge' : [10]} | lockvar C
let C.hoge[0] = 20  " 通る

もちろんこういう対策もできるはできる。

let D = {'ahoge' : [10]} | lockvar D | lockvar D.ahoge[0]

便利。


追記

強者さん達に助言をいただきました。

@public_ai000ya lockvar [深度] [変数] にすれば,B, Cの例は回避できます. lockvar 3 B 極端に,lockvar 100 C とかもありかもしれませんねっ.

— koturn@就活笑顔赤べこウンウンマン (@koturn) 2015, 7月 13

@public_ai000ya @koturn 単に lockvar! 使うという手もありますね

— バンビちゃん@実際無職 (@pink_bangbi) 2015, 7月 13

前者の例を使うとこうなります。

let A = {'foo' : {'bar' : 10}} | lockvar 3 A
let A.foo.bar = 20  " 例外

後者の例を使うとこうなります。

let B = {'hoge' : {'baz' : 10}} | lockvar! B
let B.hoge.baz = 20  " 例外

koturnさん、バンビさん、ありがとうございます!


この記事はこちらから修正リクエストを送ることができます。
Vim_scriptで定数 - github
ゴミ箱ボタンの左にある、鉛筆ボタンを押してね!