2016-11-01 4 views
1

연산자와 사용자 입력을 사용해야 할 때 Swift 3에서 for 루프를 작성하는 방법에 대해 혼란 스럽습니다.Swift 3 용 루프 작성하기

let userNum = Int(usernumInput.text!) 

    for i in 1...<=userNum { 
     if i % 2 == 0 { 
      print(i) 
     } 
    } 

답변

-2

당신은 int 값이기 때문에 그것을 반복 할 수 없습니다 있지만 코드가 가까이있어; SequenceType 프로토콜을 준수하는 객체 만 for ... in 루프에서 사용할 수 있습니다.

let userNum : Int? = Int(usernumInput.text!) 

for i in 1...userNum! { 
    print(i) 
    if i % 2 == 0 { 
     print("---") 
    } 
} 

출력 : 당신은 단순히 다른 모든 반복을 건너려면

1 
2 
--- 
.. 

, stride를 시도 - 그것은 다음과 같이 작동

for i in stride(from: 0, to: userNum!, by: 2) { 
    print(i) 
} 

출력는 :

0 
2 
4 
.. 

+2

응 해주신 모든 분들께 감사드립니다! 이것이 가장 도움이 된 대답입니다. 정말 고맙습니다! 이제 Swift 3에서 루프를 포맷하는 방법을 이해합니다. 나는 더 오래된 스타일을 더 좋아한다고 말합니다. – DevSpace

+0

이 솔루션은 필요한 것보다 두 배의 루프 오버 헤드가 있습니다. 모든 숫자를 반복하지 말고 절반 만 건너 뜁니다. – Alexander

+1

반드시 그렇지는 않습니다. OP는 if 문 전에 뭔가를하려고 할 수 있습니다 ... –

0
guard let userInputText = usernumInput.text, 
     let userInputInt = Int(userInputText) else { 
    fatalError("Input text is nil or not a valid Int") 
} 

for i in stride(from: 1, to: 10, by: 2) { 
    print(i) 
} 
+1

당신은 코드를 제공하는 대신 답을 설명해야한다. –

+0

이것은 꽤 기본적인 것들입니다. OP를 올바른 방향으로 향하게하는 데 충분한 정보를 제공했습니다. 스트라이드, 가드 등의 문서를 쉽게 찾을 수 있습니다. 후속 질문에 대해서도 답변 해 드리겠습니다. 하지만 SO는 API 참조 검색 엔진이 아닙니다. – Alexander

+1

일반적으로 답변은 OP보다 광범위한 잠재 고객이 볼 수 있습니다. 마지막 문장이 무엇을 의미하는지 모르겠다. –