WSN追加案: コモン多岐分岐コンテント

Issue #805 new
k4nagatsuki repo owner created an issue

issue #400で、コモン設定・コモン分岐・コモン判定コンテントが実装に至りました。

実は、コモンをステップのように使おうとすると、一つ不足する機能が出てきます。ステップ多岐分岐に相当する処理が簡単には作れません。分岐を重ねたり、判定を大量に配置したりすれば同じ事はできますが、かなり不格好になります。

たとえば1~10までの値を生成して1,その他,10の別で分岐する、という処理は以下のようになります。

setvar variant, "A", 'DICE(1, 10)'
if true
    chkvar '@"A" = 1'
    break // 1の処理
elif true
    chkvar 'not (@"A" = 1 or @"A" = 10)'
    break // 2~9の処理
elif true
    chkvar '@"A" = 10'
    break // 10の処理

このように、判定の列挙になって分岐である事が分かりづらくなりますし、式の結果が動的であれば一時変数に入れなければなりません。

以下のように書けるべきです。

brvarm 'DICE(1, 10)'
if '1'
    break // 1の処理
elif default
    break // 2~9の処理
elif '10'
    break // 10の処理

CWの多岐分岐には「その他」という分岐条件があり、二期分岐とは異なるルールで動きます。従って、専用のイベントコンテントが必要です。

分岐条件には数値・文字列・真偽値のを全て指定できる必要があります。式内に書く時の書式が使えます。

brvarm '@"A"'
if '999'
    break
elif '"文字列"'
    break
elif 'True'
    break

分岐条件のマッチングは=演算子と同じように動くのが自然です。

brvarm '1'
if '1' // これはマッチする
    break
elif '"1"' // 1が文字列に変換されて比較されるのでこれもマッチする
    break
elif '"1.0"' // これはマッチしない
    break
elif 'true' // 数値を真偽値へは変換できないのでマッチしない
    break

Comments (1)

  1. k4nagatsuki reporter

    個人的には、この機能はWsn.4に間に合わせる必要はないのではないかと思っています。

    この機能が無くても、簡潔さが失われるだけで同じ事ができます。

  2. Log in to comment