0

次の問題があります。

複数の変数を受け取る関数があります。

function test( fooValue:String, foobar1:String, foobar2:String, goobar1:String, goobar2:String ) {
//using the values statically
mytext1.text = foobar1;
mytext2.text = foobar2;
mytext3.text = goobar1;
mytext4.text = goobar2;

if ( goobar1 = "problem" ) {
    myProblem.text = this["foo" + fooValue] + this["goo" + fooValue];
}
}
//now here's an example call
test( "bar1","first value ","second value ", "another value", "yet another value");

上記の呼び出しで fooValue に「bar1」があるという事実を考えると、myProblem.text を作成して「最初の値と別の値」を表示するにはどうすればよいですか

this[ "foo" + fooValue] は私に undefined を与えます

  • 質問を編集し、より具体的にしようとしました。
4

1 に答える 1

1

単純。

function test( fooValue:String, foobar1:String, foobar2:String, goobar1:String, goobar2:String ) {
//using the values statically
mytext1.text = foobar1;
mytext2.text = foobar2;
mytext3.text = goobar1;
mytext4.text = goobar2;

if ( goobar1 == "problem" ) {
    myProblem.text = this["foo" + fooValue] + this["goo" + fooValue];
}
}
//now here's an example call
test( "bar1","first value ","second value ", "another value", "yet another value")

変化に気付きましたか?その行の余分=ですif(goobar1...

goobar1 = "problem"goobar1 の値を設定します。

goobar1 == "problem"goobar1 の値が「問題」かどうかを返します

経験豊富な手によって時々行われる新人の間違い:)

さらに

this["foo" + fooValue]と同等です(オブジェクトには と呼ばれるプロパティがないthis.foobar1ため、これは無効です)thisfoobar1

次のようにします。

switch(fooValue) {
    case "bar1":
        myProblem.text = foobar1 + goobar1;
        break;
    case "bar2":
        myProblem.text = foobar2 + goobar2;
        break;
}
于 2012-07-26T13:51:50.810 に答える