そもそも、HSPの文法上、C等とは違い改行の意味が大きいのでifの行かifの閉じブレースの
行以外の行にelseを入れるのは認められていなかったと思います。
(公式的にそういう発表などがされているかどうかは不明ですが動いてしまうのは
誤作動に近いものみたいです)
そのため、そのような書き方はやめたほうがいいでしょう。
○
if xxx : xxxx : else : xxxxx
○
if xxx {
xxxx
} else {
xxxxx
}
×
; エラー
if xxx : xxxx
else : xxxxx
×
; エラー
; この場合、最後の閉じブレース(})を省略すると動作する
; 後述の例を合わせて考えると「xxxx : else」のようにすると
; 「:」がifの閉じブレースのブレース代わりになる模様
if xxx {
xxxx : else : xxxxx
}
△
; 閉じブレース(})の行にelseがない
if xxx {
xxxx
}
else {
xxxxx
}
△
; 同一if文内でのマルチステートメントとブレースの併用1
; HSP2.xxでは(動作が保証されていないため)非推奨とされた文法
; (HSP3.xxでは改善されているとのこと)
if xxx : xxxx : else {
xxxxx
}
△
; 同一if文内でのマルチステートメントとブレースの併用2
; HSP2.xxでは(動作が保証されていないため)非推奨とされた文法
; (HSP3.xxでは改善されているとのこと)
if xxx {
xxxx : else {
xxxxx
}
△
; 同一if文内でのマルチステートメントとブレースの併用3
; HSP2.xxでは(動作が保証されていないため)非推奨とされた文法
; (HSP3.xxでは改善されているとのこと)
if xxx {
xxxx
} else : if {
xxxxx
}