波括弧変数というのを使うと、式の評価結果によって変数名を動的に決定できることを知った。
↓こんな感じ
let valueA = 'A' let valueB = 'B' let index = 'A' " valueAの値が表示される echo value{index} let index = 'B' " valueBの値が表示される echo value{index}
いままで、条件分岐で違う関数を呼び出すような箇所は
下記のように書いていたんだけど、
" 何かを切り替える処理 function! s:toggle(param) if s:is_hide() call s:show(a:param) else call s:hide(a:param) endif endfunction
波括弧変数と条件演算子(三項演算子)を併用すると、
分岐を一行にまとめられて面白いなあと思った。
function! s:toggle(param) call s:{s:is_hide()? "show": "hide"}(a:param) endfunction
そんだけ。
いやまあif文でも一行に納めることはできるけど、
if文を使ったコードより、ちょっと簡潔な気がする・・
(追記)
上のような書き方をしてしまうと、呼び出し箇所からタグジャンプできなくなったり、単純にキーワードでの検索でヒットしなくなってしまう。
記述量をちょっと減らすための代償としてはちょっと大きいなあ・・・