2017-09-16 61 views
0

我試圖讓var獲取鏡像其位置的數組值。然後將它除以另一個var的值,從另一個陣列鏡像它的位置。然後將結果值分配給第三個變量。意外的行爲與簡單的斯威夫特代碼

現在,在函數中,我將第一個var增加1,然後將結果值附加到第三個數組。 或者我想。

它增加了一個值,它是前兩個變量的簡單分割而不增加第一個變量。 但是在控制檯中,第三個var的結果(持有除法結果)顯示增量。 它只是在函數的附加部分,它沒有考慮到它。

我確定這是一個語法問題,但如果有人可以看我的代碼,我會非常感激。

import UIKit 

var positionA = 3 
var positionB = 1 
var arrayA = [0, 1, 2, 3, 4, 5, 6] 
var arrayB = [0, 1, 2, 3, 4, 5, 6] 
var arrayPosition = arrayA[positionA]/arrayB[positionB] 
var arrayOfValues = [ 0 ,1 , 2, 3, 4] 

print(arrayOfValues[1]) 
print(arrayOfValues[arrayPosition]) 

func increment() { 
    positionA = positionA + 1 
    arrayOfValues.append(positionA) 
} 

increment() 

print(positionA) 
print(arrayOfValues) 
print(" ads a value of 4 to the arrayOfValues (equal to positionA + 1) ") 

func incrementB() { 
    positionA = positionA + 1 
    arrayOfValues.append(arrayPosition) 
} 

incrementB() 

print(positionA) 
print(arrayOfValues) 
print("adds a value of 3 to the arrayOfValues that it still is equal to positionA, WITHOUT adding a +1 in the calculation of arrayPosition, when it SHOULD ADD a value of 5(positionA + 1 from increment(), +1 from incrementB) ") 
+3

請給出這三件事情的簡要清單:輸入值,期望的輸出和實際得到的輸出。 –

回答

0

arrayPosition在其初始賦值(從3/1得到的值爲3)後永遠不會改變。

儘管positionA在第二次增量後確實是5,但這並不是您添加到arrayOfValues中的值,因此結果與預期的一樣(3)。

[編輯]

你可以把一個計算變量這樣

var arrayPosition : Int { return arrayA[positionA]/arrayB[positionB] } 

這就像一個功能,但你並不需要使用()來調用它。

+0

嗨Alain thanx答案,我從結果看到arrayPosition獲得第一個計算(3)相同的值,但不應該增加? –

+0

arrayPosition是一個變量,而不是一個函數。您需要爲該變量指定一個新值以使其更改。 –

+0

嗨Alain thanx的答案,我從結果看到arrayPosition獲得第一個計算(3)相同的值,但不應該增加,所以通過5? 如果我改變 arrayOfValues.append(arrayPosition)爲arrayOfValues.append(arrayA [positionA]/arrayB [positionB]) 它然後工程.. 我認爲positionA將通過它在arrayPosition聲明的5個新的價值.. 毫米很多關於這個..的想法,但你會解釋爲什麼嗎? 非常感謝幫助我 非常感謝它 –