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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0305
とあるプログラマ標準でddimとldimは何故1次元の要素数を省略できない仕様なのか5解決


とあるプログラマ

リンク

2020/3/5(Thu) 18:23:27|NO.89631

dim, sdimは1次元の要素数を省略できるのにddimとldimはなぜ省略できない仕様なんでしょうかね。
hspdef.asの定義箇所に「=1」を追加すればいい話ですけど、あえて1次元目だけデフォルト値が設定されてないのは何か理由があるんでしょうか。



この記事に返信する


沢渡

リンク

2020/3/6(Fri) 11:49:29|NO.89636

要素数指定なしのdimは「既存の変数に割り当てられたメモリを解放する」という用途が想定できるし、
sdimは「配列化せずにバッファだけ確保する」のに使える(むしろこっちがメインの用途だと思う)が、
ddimやldimはそういう用途が想定できない……といったところなのかなと推測します。



とあるプログラマ

リンク

2020/3/6(Fri) 15:38:05|NO.89639

なるほど、メモリ解放・バッファ確保云々ですか…

本題とずれますが、dim・sdimでこのような用法があるということは変数初期化時にdim・sdimでも配列数 1の指定ってしたほうがいいんですかね。単なるコーディングの差でしょうか



沢渡

リンク

2020/3/9(Mon) 19:16:59|NO.89674

「配列ではない変数」を明示的に初期化する必要がある場面はそう頻繁にはないとは思いますが、
この辺りはやっぱり個人の流儀の問題じゃないかなと。
個人的には「配列として使うわけでもない単発の変数なのに要素数を指定する」のには
違和感があります。
(BASICでそういうことをやるとエラーになったので)



とあるプログラマ

リンク

2020/3/10(Tue) 21:02:30|NO.89685

やっぱりこの辺は個人のコーディングの差になってしまいますか…
「どちらでも構わないがどちらかで統一する」って感じですね。



おにたま(管理人)

リンク

2020/3/10(Tue) 21:11:55|NO.89687

ご報告ありがとうございます。
ddimとldimが省略できないのは、当初dimやsdimを含めてすべての要素を省略する使い方を想定していなかったためで、特に区別したり深い意図があるわけではないです。
指定した型で変数を初期化するという意味にも使えるので、ddimとldimの要素はすべて省略できる形で修正していきたいと思います。
色々なご意見感謝致します。



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