2010年2月27日土曜日

たけうちとおるさんの19)検索置換を読む その1

本を読んでも頭を動かしてないので、たけうちとおるさんの19)検索置換を読み解いてます。
コメントにはTwitter風につぶやきを入れてます。
JavaScriptを教える立場におられる方が読めば、初心者がどこで躓いてるか分かると思います。

var findrepAry = new Array(0);

//ローカル変数varで始まる
//findrepAryの名前はこれでなくてもいいよな
//例:findrepAry→zensujihanにしても動作するよな
//ちなみに//は行末までが注釈になるから改行がある場合は、
//いちいち行頭に//を入れなければならない

//コメント始めを/*、終わりを*/にすると手間がはぶける
/*
初っ端から変数宣言が出てきた
()は命令だけど new Array(0)はどんな意味なのだ?
ここで止まっても仕方ないので進める

30分後、別な箇所でつまづく
「JavaScriptの絵本」p98を見る
  配列はArrayオブジェクトという組み込みオブジェクトを使う
  new演算子で新しいオブジェクトを生成する
new Array(0)の(0)の意味は分からないまま
*/

findrepAry.push("1,1");
findrepAry.push("2,2");
findrepAry.push("3,3");
findrepAry.push("4,4");
findrepAry.push("5,5");
findrepAry.push("6,6");
findrepAry.push("7,7");
findrepAry.push("8,8");
findrepAry.push("9,9");
findrepAry.push("0,0");

/*
Array オブジェクト(配列)が出てきた~~
push() は配列の末尾に要素を追加する
配列の末尾はnew Array(0)だよな
(0)は0項目の要素だよな
0項目の要素に全角数字と半角数字を追加するのか?
全角数字を半角数字に置換するのにどうして???
分からんなりに次に進める
*/

main(findrepAry);
//手元の本を見てもmain()はないため意味不明

function main(findrepAry){
//functionを使って関数を定義するらしい。今日はここまで。以下は省略。


Page2010でたけうちさんが実演した全角数字を半角数字にするスクリプトです。
で、文字列を操作するのですからstringで操作してるのかと思ったら、stringは使われてません。
アプローチがそもそも初心者と違ってます。
頭から湯気が出てます。大丈夫か、自分?



ひと休みした後、夕方より追記

findrepAry.push("全角数字,半角数字");
の一連は置換リストなのだが、pushは配列の末尾に要素の追加でどうしてこうなるのかとちと調べていた。
配列の一部を置換する関数はspliceなのだが、pushでも置換できるようだ。

push(@a,$x,$y) と splice(@a,$#a+1,0,$x,$y)
は同じ意味を持つ。とあった。う~ん、高度すぎます(゚∀゚;)
初心者はこうしてつまづくのですね。。。

1 件のコメント:

たけうちとおる さんのコメント...

すいません。3月末まで忙しくてコメント付けられませんでした。僕のスクリプトはへたっぴなので恥ずかしいですが。。。本心ですよ。上手な方に見られたら笑われてしまう。(笑)

var findrepAry = new Array(0);
配列をまず宣言してつくっておく。この時点では空っぽ。
findrepAry.push("1,1");
findrepAry.push("2,2");
検索置換リストを追加していく。といった感じです。

こうしておけば、他も文字を検索置換したくなった場合同じ要領でついかしていけば良いわけです。