人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaScript の動作でわからないところがあります。どの辺りを修正すれば良いか、ご教示いただけないでしょうか?



setModelDeclaration("model(parentModel)") を実行すると。
class Port(model)(true): と出力されます。

期待する出力は、
class Port(model): となります。



定義した関数
function setModelDeclaration(sheetName){
sheetName=String(sheetName);
parentModelName=/(.*)/.test(sheetName);
var modelName="";

if(parentModelName.length!=0){
modelName = sheetName.slice(0,sheetName.indexOf("("));
modelDeclaration = "class "+sheetName+"("+parentModelName+"):";

}else{
modelName = sheetName;
modelDeclaration = "class "+modelName+"(models.Model):";

}
return modelDeclaration;

}

●質問者: domodomodomo
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●300ポイント ベストアンサー

こんな感じのことをやりたいのでしょうか?

function setModelDeclaration(sheetName) {
 sheetName = String(sheetName);
// RegExp.test() の戻り値は true / false
// parentModelName = /(.*)/.test(sheetName);
 var parentModelName;
 var re = /\((.*)\)/; // () の内側を切り出す正規表現
 var result;
 if ((result = re.exec(sheetName)) != null) {
 parentModelName = result[1];
 }

 if(parentModelName){
 modelName = sheetName.slice(0,sheetName.indexOf("("));
// ***** sheet じゃなくて model ?
// modelDeclaration = "class "+sheetName+"("+parentModelName+"):";
 modelDeclaration = "class "+modelName+"("+parentModelName+"):";
 } else {
 ...
 }
 return modelDeclaration;
}

元のコードになるべく残して、書き換えたところは、元のコードを残してあります。

ポイントは、こんなところかと。

メソッドの引数や戻り値の意味は、ドキュメントを引くようにした方が良いです。


domodomodomoさんのコメント
ご回答いただき、誠にありがとうございます。 ドキュメントの引き方まで教えていただき、幸甚でございます。 JavaScript 自体、まだ触りだしたばかりなので、大変苦慮しておりました。 ご教示いただき、ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ