2014-10-17 160 views
2

有動態閉環範圍for-in循環的正確方法是什麼?我在此部分得到了一個錯誤for z in 1...[10-x]{For循環動態閉合範圍

for x in 1...10{ 

    for y in 1...x{ 
     print(" ") 
    } 

    for z in 1...[10-x]{ 
     print("*") 
    } 

    println() 

} 

錯誤:

Playground execution failed: <EXPR>:26:15: error: 'ClosedInterval<T>' does not have a member named 'Generator' for z in 1...[10-x]{

回答

2

[10-x]表示陣列(與單個元件10-x)。你會想 「正常」 的括號 :

for z in 1 ... (10 - x) { ... } 

或只是

for z in 1 ... 10 - x { ... } 

因爲...-一個優先級較低。

正如您所注意到的,這對x = 10不起作用,因爲在Swift中不允許使用end < start範圍。

要執行循環n次,最好使用範圍0 ..< n,範圍運算符省略上限值。這適用於n = 0以及:

for x in 1 ... 10 { 
    for y in 0 ..< x { 
     print(" ") 
    } 
    for z in 0 ..< 10 - x { 
     print("*") 
    } 
    println() 
} 
+0

我也試過,它不起作用。我得到這個錯誤:'致命的錯誤:不能形成範圍與結束<開始' – JunM 2014-10-17 07:02:33

+0

對不起,我認爲它的工作,但我仍然有致命錯誤:) – JunM 2014-10-17 07:04:04

+0

我現在得到它,致命錯誤發生時(10-x )變成零:) – JunM 2014-10-17 07:07:37