使用Swift在for ... in循环中的三个变量

时间:2019-11-13 05:45:17

标签: swift for-in-loop

我能够使用for ... in函数在Swift中为两个变量实现zip()循环:

for (i, j) in zip(1...number, 2...number + 1)

现在,我正在尝试使用for ... in在Swift中为三个变量实现一个zip()循环,但是它给出了错误:

for (i, j, k) in zip(1...number, 2...number + 1, 3...number + 2)

使用zip时出现的错误:

  

main.swift:8:51:错误:调用中有其他参数       for zip(1 ... number,2 ... number + 1,1,3 ... number + 2)中的(i,j,k)

我也尝试省略了zip()函数,但是仍然出现错误:

for (i, j, k) in (1...number, 2...number + 1, 3...number + 2)

在不使用zip()的情况下出现的错误:

  

main.swift:8:18:错误:类型'((ClosedRange,ClosedRange,ClosedRange)''不符合协议'Sequence'       在(1 ...数字,2 ...数字+ 1、3 ...数字+ 2)中的(i,j,k)

我该如何解决?

1 个答案:

答案 0 :(得分:2)

eval.h int eval(player p) { int score=0; /*.....*/ if(p.featureA) score+=bonusA; if(p.featureB) score+=bonusA; if(p.featureM) score+=bonusM[p.featureM.type]; /*......*/ return score; } 不适用于2个以上的参数。

  

func zip(_ sequence1:Sequence1,_ sequence2:   Sequence2)-> Zip2Sequence,其中Sequence1:   序列,序列2:序列

您需要组合多个eval_params.h int bonusA=somevaluea; int bonusB=somevlaueb; MyEnumType bonusM[]={/*......*/}; TUNE(bonusA,bonusB,MyEnumType); 才能使它正常工作。

示例:

zip(_:_:)