「なでしこv3」開発掲示板

なでしこ3を改善するための掲示板
[一覧へ] > (@23) [低] [未処理]
@23■ (#82) 「足す」は数値として計算してほしい(要望) - TKI (2022-01-12 00:50) /低 未処理
たびたびの要望、失礼します。
現状では文字列と数値を「足す」と文字列の連結になります。

「1」と2を足して表示 //→12

「足す」は四則演算の命令としてマニュアルに載っているし、文字列を連結したいときは「追加」があります。
文字の連結目的で「足す」を使う人はいない……はず?です。
「足す」では数値として計算されることを期待したいです。

~~

・うっかり例
値指定バーとボタンを作って、ボタンを押すとバーの値が+1されるものを作ろうとしたのですが
ボタンをクリックするとバーの値は1→11となりました


バー=[0,100,1]の値指定バー作成 //初期値1
「>」のボタン作成
それをクリックした時には
  バーのテキスト取得
  それに1を足す
  バーにそれをテキスト設定
  バーのテキスト取得して表示 //→11
ここまで

(なでしこバージョンv3.2.33)

(#85) 互換性のため - クジラ飛行机 (2022-01-14 23:13) /低 確認待ち
ご指摘ありがとうございます。
ただ、v3ではすでに長い間「足す」の動作をJavaScriptと合わせてしまっています。

今から基本的な「足す」命令の動作を変えると、多くのプログラムを変更しなくてはならないので、これは、現状のまま行きたいと思っています。

そもそも「テキスト取得」命令は文字列を返す命令なので、数値として取得する命令が必要かもしれません。
こちらは、別のIssueとして以下に提起しました。
https://github.com/kujirahand/nadesiko3/issues/1133

良い問題提起をありがとうございました!

(#86) 再考をおねがいします - TKI (2022-01-15 23:02) /低 確認待ち
今後作られるプログラムで「足す」に関するワナとして扱われるほうが問題だと思います。
テキスト取得以外でも文字列型の数列が返ってくることはたくさんあるはず。

互換性の件ですが、「足す」を文字連結として使っているはずがない…ことにしたいです。
あったとしてもバージョン据え置きで使ってもらうしかない。

javascriptでも厄介な仕様として扱われているのではないでしょうか?
「足し算しようとして文字の連結になってしまう」のような失敗談や注意喚起は多くみられ、
「文字列が入っている場合は連結してくれます」のようなポジティブな説明は見られないかと思います。


長くなりましたが、私としては今後ずっと足し算で文字連結におびえるのがとても嫌です!

(#87) v1の仕様どうりですよね? - 雪乃☆雫 (2022-01-17 07:51) /低 確認待ち
#-----------------------------------------------
「1」と「1」を足して表示。#全角
「1」と「1」を足して表示。#半角
「1」+「1」を表示。#全角
「1」+「1」を表示。#半角
#-----------------------------------------------

v1の場合
#-----------------------------------------------
11
11
0
2
#-----------------------------------------------

v3の場合
#-----------------------------------------------
11
11
NaN
2
#-----------------------------------------------

ちなみに・・・
HSPだったかは文字列連結の演算子に+が使われていて・・・
なでしこを始めた時に、「+で文字列連結できるハズ」って思ったら0になってアレ?ってなった遠い記憶が思い出されましたw

(#88) v1ともちょっと違います - TKI (2022-01-17 19:16) /低 未処理
雪乃☆雫さんのサンプルは足すの引数が両方文字となっていますが、
実際のプログラムでは「(なんとか)に1を足す」と数値1を直書きするケースがきっと多分おそらく多いでしょう(予想)

想定されるケースに近いのは
「1」+1を表示
「1」に1を足して表示
という記述で、

なでしこv1では
「1」+1を表示 //→2
「1」に1を足して表示 //→2

なでしこv3では
「1」+1を表示 //→2
「1」に1を足して表示 //→11

なでしこ1の動作とも違うし、
なでしこ3の記号「+」の動作とも違う。


ネットの解説記事に、「足す」は文字が入ると連結してしまうから「+」を使いましょう、とか書かれそう。

(#82)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能