我正在尝试更新另一个函数内部的Int变量(来自一个函数)的值。我现在拥有的是两个在任何函数之外声明为0的变量。然后在一个函数中,它们被赋值为1或0.直到这一点,一切都很好。然后我尝试在用户点击UIImageView
时更新变量(从一个变量减去3并将另外两个加2)。我遇到的问题是,不是减去3并将2加到1和0,而是减去3并将2添加到原始0,即变量被声明为。
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]
,其中Ints是playerA
和{ {1}})。
答案 0 :(得分: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
}
}
答案 1 :(得分: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"