チケット #30274

strreplace で、結果を格納する変数を引数に渡したときの動作

登録: 2012-12-07 22:44 最終更新: 2013-04-17 22:45

報告者:
(del#1144)
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
直さない
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

r5069の変更で落ちないように対処していただいた。

仕様がどうあるべきか検討が必要。

現象:strreplace で matchstr や groupmatchstr1-9 を置き換えようとすると落ちる

チケットの履歴 (7 件中 3 件表示)

2012-12-07 22:44 更新者: (del#1144)
  • 新しいチケット "strreplace で、結果を格納する変数を引数に渡したときの動作" が作成されました
2013-02-16 00:47 更新者: (del#1144)
  • 詳細が更新されました
2013-02-16 01:03 更新者: (del#1144)
コメント

内部で strmatch と同じ FindRegexStringOne() を利用しているので格納されてしまう。

「引数受け取り時にチェックしてErrSyntaxを返す」は可能でしょうか?

2013-03-01 09:01 更新者: None
2013-03-01 13:13 更新者: (del#1144)
2013-04-16 20:43 更新者: doda
コメント

エラーにする事は可能ですが、エラーコードがErrSyntaxだとちょっと分かり辛いと思います。 かといって他のはもっと合わないので、エラーにするのだったらこれ用のエラーコードの新設ですかね。

あと、matchstr等への代入自体は禁止されていないので、strreplaceでだけエラーにするというのもちょっと抵抗があります。 矛盾が起きるのがstrreplaceのみなのでしょうがないと言えばそうなのですが。

例えば、

matchstr="@@HOGE@@"
strreplace matchstr 0 "[A-Z]+" "FUGA"
というコードを書いた場合は、マッチした文字列としてのmatchstrを使おうとは考えていないと思われる(*1)ので、 現状のように置き換えられた後の文字列が入る形でいいんじゃないかなと思っています。

*1: マッチした文字列としてのmatchstrを使う気があるのならば当然matchstrを二重に使おうとしている事に気づくだろうし、 その上でmatchstrにマッチした文字列が入って欲しいのならばそもそもstrmatchを使えばいい事になりますし。

2013-04-17 22:45 更新者: (del#1144)
  • 解決法なし から 直さない に更新されました
  • チケット完了時刻2013-04-17 22:45 に更新されました
  • 状況オープン から 完了 に更新されました
コメント

わかりました。現状のままでいいと思います。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする