HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0308
(´ω`)配列変数の扱いについて7解決


(´ω`)

リンク

2016/3/8(Tue) 09:17:12|NO.74813

この仕様(?)で数日悩んだので、一応ご報告というか……(u´ω`)

配列変数について。
例えば、以下のソース。

test = 0, 2, 3 mes test(1)
は当然、2が表示されますね。
で、次にこれ。
  test = 0, 2, 3
  test(0,1) = 1
  mes test(1,0)
これも、2が表示されますね。
最後に、これ。
  test = 0, 2, 3
  mes test(1,0)
「配列の要素が無効です」というエラーが出ます。

つまり、1次配列に対して2次以上の参照を行うと、たとえ指定した参照値がゼロでも
エラーになるわけですが、なんか感覚的には、ゼロだったら通して欲しいな、と。
csvファイルを取り込むルーーチンで、通常は数行のデータを扱っていたのですがたまたま、
1行だけのデータを扱った際に上記エラーが発生し、一体どこでエラーが発生しとるんだと
めっさ悩んだという顛末です。

ただ、私だけの問題って気もするので、要望でなく報告ということで。
もし他にも、同じ事で悩んだ方がいらっしゃれば、よろしくご検討をお願い申し上げます。(´ω`)




この記事に返信する


(´ω`)

リンク

2016/3/8(Tue) 09:18:02|NO.74814

うわ、preタグみすった。
読みにくくてごめんなさい。(´・ω・`)



スペース

リンク

2016/3/8(Tue) 10:30:01|NO.74816

全然気づかなかった・・・よく考えると親切ではないですね。
ただ、ある程度書き方が違っててもきちんと動いたり、自動で変数を初期化したり拡張したり・・・
そういうのってやり過ぎると思わぬバグが発生しますよね。
変数は自分で初期化、違う型・存ぜぬ配列に代入しようとしてたらコンパイル時にエラー!ってやってくれた方が良い時もある。
ここらへんのバランスは難しいと思うけど・・・



科学太郎

リンク

2016/3/8(Tue) 11:56:24|NO.74817


dim test,3,1 test(0,0)=1,2,3 test(0,1)=4,5,6 test(0,2)=7,8,9
これで良いのでは?



スペース

リンク

2016/3/8(Tue) 13:12:40|NO.74818

>科学太郎さん
この場合解決法を聞いているわけではなく、「こういう書き方でエラーが出るのは気持ちが悪い」という意味かと。
「なんか感覚的には、ゼロだったら通して欲しいな」と書いていますし。



科学太郎

リンク

2016/3/8(Tue) 13:25:39|NO.74819

> この場合解決法を聞いているわけではなく、「こういう書き方でエラーが出るのは気持ちが悪い」という意味かと。
> 「なんか感覚的には、ゼロだったら通して欲しいな」と書いていますし。
記述の問題でしたか。



(´ω`)

リンク

2016/3/8(Tue) 15:25:00|NO.74821

そうそう、感覚的なお話なのです。
これをエラーと判定する理由もわかりますし、気を付けて書けば全く問題に
ならないポイントなのだけれど……という。

多分アレです、バグで数日悩んだ理由があまりに拍子抜けだったので、
なんかこの「ぬはあ!」という気持ちを誰かに理解してもらいたい、
というのが本エントリーの最大の原動力だったのです。

ええ、いま明白に自覚しました。ということで改めて。
ぬっはああああああ!何じゃそれ!('A`)



Noap

リンク

2016/3/8(Tue) 18:44:59|NO.74822

直接は関係ありませんが


test = 0, 2, 3 test(0,1) = 1 mes test(1,0)

前に教えてもらったのですが
参照とは違い存在しない次元への代入を行うのはエラーにはなりませんが保障外の動作らしいです

http://www.onionsoft.net/hsp/v35/doclib/hspprog.htm#ARRAY より
「なお、配列要素の自動確保で次元を拡張することはできません。」

今後のバージョンでドキュメントで補足や明記をしてくれるらしいです



ONION software Copyright 1997-2018(c) All rights reserved.