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]

便利。


追記

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

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

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さん、バンビさん、ありがとうございます!

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。