[2599] 無(無参照)かどうかの簡単な判定法

投稿日 2020/08/28(Fri) 16:16:09
投稿者 碁盤鮫
参照先

(不具合か迷いましたが、一応こちらで。。)

「あるオブジェクトが無かどうか」を判断するには、

  もし〜が無なら、〜

のようにするのが普通の方法だ、と思っています。私の目についた限りでの公式のプログラム例では、そうなっていました。(「無」に関してマニュアルでどうなっていたか今ちょっと確認できていません。)

しかし実は(少なくともスミレ畑では)、「空文字列」や「0」もまた「無と等しい」と解釈されるようになっているため、正確な判定法とは言えないと思います。

ーーーーーーーーーー サンプルプログラム
「空文字列は無で、無は空文字列?! [「」が無かつ無が「」]」と報告
「0は無で、無は0?! [0が無かつ無が0]」と報告
「無は空白?! [無が空白である]」と報告
「無は文字?! [無が文字である]」と報告
ーーーーーーーーーーーーーーーーーーーー

ーーーーーーーーーー スミレ畑(Sumire 1.7.1016)での実行結果
空文字列は無で、無は空文字列?! ○
0は無で、無は0?! ○
無は空白?! ○
無は文字?! ○
ーーーーーーーーーーーーーーーーーーーー

実際、「〜として入力する」という手順(これもマニュアルで見つ以下略。。)の結果が「キャンセル」だったのか「空文字列でOK」だったのかを戻り値から判定しようとすると、この問題につまずくと思います。

厳密に「無だけ」を検出するために、例えば、わざわざ例外監視文でエラーを捕捉する、というのも大げさな気がします。

そういうわけですので、どなたか何かよい方法をご存じでしたらご教示いただけますと幸いです。。

[2020/08/29 追記] 読み返していたところ、ふと、だったら

  もし某は「」かつ某は0なら、〜

でよいのでは……、と思いつきました。

ーーーーーーーーーー サンプルプログラム
「0は厳密に無? [0がム]」と報告
「空文字列は厳密に無? [「」がム]」と報告
「無は厳密に無? [無がム]」と報告
「未定義変数の値は厳密に無? [_未定義変数_がム]」と報告

[某]が、ムの手順
  [某が0かつ某が「」]を返す
終わり
ーーーーーーーーーーーーーーーーーーーー

しかし、直感的ではありませんね。。


関連一覧ツリー

をクリックするとツリーを一括表示します)

返信フォーム

(この投稿に返信する場合は下記フォームから投稿して下さい)
(1MBまで)
(英数字で8文字以内)

- 投稿修正/削除フォーム -
処理 No パスワード

▲ページの先頭へ

- WebForum -