物置き

波括弧変数

波括弧変数というのを使うと、式の評価結果によって変数名を動的に決定できることを知った。

↓こんな感じ

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文を使ったコードより、ちょっと簡潔な気がする・・


(追記)
上のような書き方をしてしまうと、呼び出し箇所からタグジャンプできなくなったり、単純にキーワードでの検索でヒットしなくなってしまう。
記述量をちょっと減らすための代償としてはちょっと大きいなあ・・・