September 10, 2018

Hugoで変数に代入する

プログラミングをしていると、変数を使いたい時に 例えば以下のように最初に変数宣言をして条件分岐で代入したいことがよくあるだろう。

hoge := "foo"
qux := false

if qux {
  hoge = "bar"
} else {
  hoge = "baz"
}

Hugoでも同様のことをやろうとして、このように書いたがbuildが通らなかった。

{{ $hoge := "foo" }}
{{ if $qux }}
   {{ $hoge = "bar" }}
{{ else }}
   {{ $hoge = "baz" }}
{{ end }}

この単純な式が間違ってるはずが無いとしばらく悩んだ。 まさかの対応バージョンはHugo v0.48, Go 1.11かららしい。 リリースされたのは2週間ぐらい前の2018/08/29なのでかなり最近である。
このコードを書こうと思ったのが最近で良かったw
versionも0.x代だしHugoは意外と未完成っぽい。

使っているMACはbrewでHugoとGoをinstallしているので、

$ brew update
$ brew upgrade

でバージョンアップを行う。
(brew upgrade はソフトを指定しないと、全て更新してしまうので注意が必要。)

Updateをしたら無事buildが通った。
今見ているページでもこのif文は動いている。

© AAkira 2018