Closed DIYJii closed 4 months ago
原因は #149 と同じで文字列リテラルで行結合を考慮していなかったのが問題
_
が出現し、かつその後が行の終端(※)となる場合は行結合と見なす
//
)、連続するホワイトスペースからの改行またはコメント''
文字列でも同様@DIYJii
m[b] = a //真のエラー個所
配列の添字にEMPTYを入れるとエラーになるのはまた別件ですので必要であればissueを立ててください
UWSCは添字のEMPTYを0
として評価しているようですが、個人的にはちょっと微妙な仕様だと感じていてどうしようか悩んでいます
また、UWSCでは
print "a_ a
b"
という記述は行連結記号のあとに文字があるためエラーとなりますが、UWSCRではこの場合_
を行連結記号と見なさずそのまま文字列として扱います、これは仕様とします
配列の添字にEMPTYを入れるとエラーになるのはまた別件ですので必要であればissueを立ててください UWSCは添字のEMPTYを0として評価しているようですが、個人的にはちょっと微妙な仕様だと感じていてどうしようか悩んでいます
実はUWSCで配列の添字のEmptyが0扱いされているのは、今回の件で初めて知りました。 ただ、今迄、ルティーンの簡素化の為に、Emptyを使ってもエラーにならない事を前提にしたスクリプトを書いていました。 配列は、夫々の箱に入っているデータが個々に独立して存在しているのであって、UWSCが特に[0]のデータを取り上げてDefault扱いしているのは、おかしいと思います。 エラー扱いしない場合は、UWSCと異なって、戻り値はEmptyにする方がロジカルだと思いますが・・・
もし良ければ、他に文字化された数字を配列に代入してもエラーにならない様にして欲しいとの要望が有りますので、其れとまとめてEnhancementのリクエストを上げるげます。
@DIYJii 要望の件はどうなってますか?
数値変換可能な文字列を添字として許容できるようにするのであれば、それにより添字のEMPTYも0として扱えるようになります UWSCRデータ型を数値変換する関数を通すとそのようになるからですが、実装の手間的にその関数を通すのが一番楽なので要望が出ればそのまま実装を進めてしまいますが
私は、サンデー毎日なので、全く構わないのですが、連休中なので、此方からのコンタクトは控えてました。 宜しければ、少し溜まっているレポートを挙げさせて頂きます。
本題に戻って、インデックスにemptyをや空文字を入れた場合、Emptyを返すのが論理的にスッキリすると思うのですが、 UWSCでは[0]の内容を戻り値とした理由は分りません。 とりあえず、文字列数字をインデックスに使う件でIssueを挙げておきます。
UWSCのケースはVARIANTのEMPTY型が0として扱われるケースに該当しているから0として扱われる、ということなのだと思われます
返事が、遅くなって申し訳ありません。
私の言う論理的云々は捨てて、やはり、emptyには[0]を対応させ、#154の件も合わせて, UWSC と同じ仕様にするのが妥当という結論に至りました。
考えてみれば、[0]をインデックスの起点ではなく、分類出来なかった物や、その他分類の入れ物、 或いはインデックス・エラーを気にしないで使えるダミーの入れ物として使う等等、色々使い道が有りそうです。 更に、ファイル・データの行・列は共に、起点が[1]である事も合わせて考えると、更に便利な仕様に見えてきました。
危うく、他のUWSC ユーザーに迷惑を掛けるところでした。
p.s. 今後、この様な議論の場合、他の人の意見を聞くのも良いと思うのですが, そちらの判断でDiscussionを開くというのはどうでしょうか?
概要
文字列を行結合した記述が有ると、それ以降にあるスクリプトで実行時エラーが起きた場合, 真のエラー箇所から上方に結合行分だけずれた行のスクリプトが、問題個所として表示される。
再現スクリプト
再現手順
実際のトラブルは、約20行のHTMLの結合箇所から500行位離れた全く関連性のないスクリプトで,UWSCからの仕様変更対応もれが有った為にエラーが発生していました。エラーでもないスクリプトのあたりをさんざ調べまくって、エラー箇所はそこではないと分かった後も、こんな遠くに離れた箇所とずれの因果関係を探し出す迄は、ほんまに、しんどかったっス!
バージョン
1.0.0
不具合発生環境
Windows 10