Q1:@P18「文字列を設定した後、その文字列で値を確定する」。Ap58「メソッド処理結果選択」。B「replaceFirst(String, String)」について。
Q1-1:
注文票アプリケーションの作成チュートリアルについて質問があります。
p18
掛け算の結果を表示させる起動メソッドが「文字列を設定した後、その文字列で値を確定する」となっていますが、「数値を設定する」や「表示したい文字列を設定する」ではいけないのでしょうか?
p58
中ほどで、同じメソッドが2つ現れていて、その内の2番目を選ぶのは何故なのでしょうか?
p72
起動メソッドで「replaceFirst(String, String)」がありますが、ここでのFirstとはどのような意味でしょうか?また、このメソッドの他にもreplaceを含むものがあります。
引数に関しては把握できています。なぜ、この場面ではこのメソッドを選択しなければならないのかご説明して頂けると有難いです。
A1-1:
1.P18「文字列を設定した後、その文字列で値を確定する」について
お問い合わせの処理では、「合計金額」を表示する欄として[数値入力フィールド]を使用しています。
[数値入力フィールド]ではキーボードから文字を入力しただけでは、表示されている文字は値として確定していません。
値の確定は
@数値入力フィールドからフォーカスが外れた時
A数値入力フィールド内でEnterキーが押された時
など、実行画面上の操作から行うこともできますが、メソッドで確定するには
B「文字列を設定した後、その文字列で値を確定する」または
「現在表示されている文字列で値を確定する」を使用します。
「表示したい文字列を設定する」では画面のフィールド上の表示は変わりますが、まだ値として確定されていません。
「数値を設定する(Object)」は、ver2.2以前では、引数として設定する値は「数値」でなくてはならず、文字列を受け付けない仕様でした。
例えば引数に「取得方法:固定値、メソッド/値:(数字)」としても、メソッド/値欄に入力された数字は数値でなく文字列なので、設定できませんでした。
チュートリアルではより汎用性のある「文字列を設定した後、その文字列で値を確定する」を紹介していましたが、Ver2.3からは「数値を設定する(Object)」でも引数に文字列を入れても実行できるようになりましたので、現在は「数値を設定する(Object)」を使って頂いても構いません。
2.p58「メソッド処理結果選択」について
ここでは引数に「取得方法:メソッド処理結果」を使っています。
「取得方法:メソッド処理結果」とは同じイベントに繋がっている処理のうち、先に行われた処理の結果を「メソッド/値」として取得するものです。
P52から説明が始まる処理では2列の「カタログ」テーブルで、選択されている行の、1列目のデータを取り出し[テキストフィールド]へ、2列目のデータを取り出し[数値入力フィールド]へ、それぞれ設定するという処理を行っています。
「選択行で○列目のデータを取り出し」という処理は、「指定セルの値を取得する(int,int)」というメソッドで行われます。
「メソッド処理結果選択」窓ではメソッド名が表示されますので、『2列目のデータを[数値入力フィールド]へ設定する』時点では、「指定セルの値を取得する(int,int)」が二つ表示されます。表示は処理の順番通りとお考え下さい。
[数値入力フィールド]には、2回目に行った「指定セルの値を取得する(int,int)」の結果を設定したいので、2番目を選んでいます。
3.「replaceFirst(String, String)」について
[文字列格納変数]の「replace」メソッドは、[文字列格納変数]内の文字列の中に<引数0>で指定した文字列があれば<引数1>で置換え、その結果を「取得方法:メソッド処理結果」で、次の処理で利用できるというものです。
「First」が付いているので、<引数0>で指定の最初に出現した文字列だけが置換えられます。
例)変数の中の文字列:abcbc
引数0:bc
引数1:z
戻り値:azbc
「replaceAll」の場合には全部の該当する文字列が置換えられます
例)abcbc→azz
「replace」メソッドには日本語名が付けられているものもあり
・正規表現に適合する最初の文字列を置換する---replaceFirstThenReplace
・正規表現に適合するすべての文字列を置換する---replaceAllThenReplace
・指定文字列と一致するすべての文字列を置換する
---simpleReplaceFirstThenReplace
・指定文字列と一致する最初の文字列を置換する
---simpleReplaceAllThenReplace
となっています。「ThenReplace」が付いた上記4つのメソッドは[文字列格納変数]の中の文字列が置換えをした結果に書き換わります。
「正規表現に適合する・・・・・・」と「指定文字列と一致する・・・・・・」の違いですが
・「指定文字列と一致する・・・・・・」は単純な文字列と文字列の置換えができます。
・ 「正規表現に適合する・・・・・・」は、「正規表現」を使って置換えができますが、正規表現で使われている特殊文字(「\」など)は意図したように置換えができない場合があります。