2016-06-16 7 views
0

別の関数の内部で(ある関数からの)Int変数の値を更新しようとしています。私が今持っているのは、関数の外で0と宣言されている2つの変数です。そして、1つの関数には、1または0の値が割り当てられます。この点まではすべて正常です。次に、ユーザがUIImageViewをタップしたときに変数を更新しようとしています(1つの変数から3を減算し、もう一方を2つ追加する)。私が抱えている問題は、3を減算し、1と0に2を加える代わりに、3を減算し、元の0に変数を宣言した2を加えることです。別の関数内のある関数から変数を更新する

var playerA:Int = 0 
var playerB:Int = 0 

func firstFunction(playerA:Int, playerB:Int) { 
    if counter%2 { 
     playerA = 1 
     playerB = 0 
    } 
    else { 
     playerA = 0 
     playerB = 1 
    } 
} 

func secondFunction(playerA:Int, playerB:Int) { 
    counter += 1 
    if counter%2 0 { 
     playerA += -3 
     playerB += 2 
    } 
    else { 
     playerA += 2 
     playerB += =3 
    } 

ここsecondFunctionを返し-3代わり-2の2及び2

この問題を解決するために私のアイデアは( firstFunctionから返される配列を使用すること、およびインデックスによって要素を参照することである

このような->[Int, Int]は、playerAplayerBです)。

+0

変数を関数に渡さないでください。それはうまくいくはずです。変数はグローバルで、すべてのオブジェクトで表示されます。 – FredericP

答えて

0

関数をどのように呼び出すかを表示する必要がありますが、パラメータをinoutと宣言しないと機能しません。 Read up here to understand how it works(イン・アウトのパラメータまでスクロールし)、それはこの例が付属しています:

func swapTwoInts(inout a: Int, inout _ b: Int) { 
    let temporaryA = a 
    a = b 
    b = temporaryA 
} 

var someInt = 3 
var anotherInt = 107 
swapTwoInts(&someInt, &anotherInt) 
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") 
// Prints "someInt is now 107, and anotherInt is now 3" 
+0

ありがとう、それはすべて今動作します! –

+0

@Rileyうまくいけば、私の答えを正しいものとしてマークすることができます。 – lawicko

1

私はあなたのコード部分では、いくつかのタイプミスのがあると仮定するつもりですので、私はそれらを修正することを決定しましたので、関数はあなたの書き込みを反映しています。この場合、引数を渡す理由もありません。

var counter: Int = 0 
var playerA: Int = 0 
var playerB: Int = 0 

func firstFunction() { 
    if counter % 2 == 0 { 
     playerA = 1 
     playerB = 0 
    } 
    else 
    { 
     playerA = 0 
     playerB = 1 
    } 
} 

func secondFunction() { 
    counter += 1 
    if counter % 2 == 0 { 
     playerA -= 3 
     playerB += 2 
    } 
    else 
    { 
     playerA += 2 
     playerB -= 3 
    } 
} 
関連する問題