2016-11-01 10 views
1

演算子とユーザー入力を使用する必要がある場合、Swift 3でforループを記述する方法を混乱させます。SwiftでのForループの作成3

let userNum = Int(usernumInput.text!) 

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

答えて

-2

あなたは、コードしている、それがint値ですので、それはそれをループすることはできませんが、近くにあります。 for ... inループでは、SequenceTypeプロトコルに準拠するオブジェクトのみを使用できます。

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

このソリューションでは、ループオーバーヘッドが必要以上に2倍になります。すべての数字を繰り返して、その半分をスキップしないでください。 – 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だけではなく、より多くの視聴者が視聴することを意図しています。あなたの最後の文章が何を意味するか分かりません。 –

関連する問題