これのおさらいです。
前回までのおさらい
意図しない挙動の例
{ TOAUTO('000123') // => 123 -- TOAUTO('.') // => 0.000000 }
使わなければ良いだけの話ですが、「はろーYAYAわーるど」などのテンプレートゴーストにはミドルウェアレベルで組み込まれています。具体的には、イベントのReferenceがTOAUTOを経由した状態でreference配列に格納されています。つまり、Reference0に"."が入っている場合でも、reference[0]を参照すると"0.000000"となってしまいます。
対策
最大の問題はTOAUTOの変換が「不可逆」であるという点です。"123"という値がreference[0]で参照出来ても、本当に送られてきた文字列が"123"だったのか"0123"だったのか"000123"だったのか判断のしようがありません。
なので不可逆な変換のみ無効とする関数TOAUTOEXを新たに定義しました。
{ TOAUTOEX('000123') // => 000123 -- TOAUTOEX('.') // => . -- TOAUTOEX('1') + TOAUTOEX('1') // => 2 } TOAUTOEX { _v = _argv[0] if TOSTR(TOAUTO(_v)) == _v { TOAUTO(_v) retrun } _v }
yaya_shiori3.dicの414行目のTOAUTOをこのTOAUTOEXに置き換えることでreference参照の不具合を回避できます。