2016-05-16 8 views
-2

私は、パラメータとしてクロージャーを使った拡張に関する素早い学習の本でやっています。本の中で swift repeat func:関数の宣言で期待される識別子

」、それは私に
extensionInt { 
    func repeat(work:() ->()) { 
     for _ in 0..< self { 
      work() 
     } 
    } 
} 

に語ったが、行のための「FUNCリピート..」Xcodeは

「関数宣言に期待される識別子」とのラインのために私に言いましたfor _ in ... "とxcodeは" Braced block of statementsは使用されていないクロージャー "と" for 'each-for loopのボディを開始する' {'を期待しています "

なぜこれらが起こるのか、私は何をすべきか教えていただけますか?

答えて

0

投稿コードで多くの問題があります:私はこれがあなたのタイプミスである疑いが

  1. extensionIntは、extension Intあるべき@Zhaoたよう
  2. を投稿YIは、repeatはSwiftキーワードであり、関数の名前を変更する必要があることを指摘しました(例:repeatWork)
  3. スウィフトハーフオープンレンジオペレータは、両側に空きスペースがあるか、または両側にスペースが必要です。これらの両方が有効です。

    0 ..< self 
    0..<self 
    

最後に、あなたはこのように、この関数を呼び出すことができます。

2.repeatWork({ 
    print("Hello") 
}) 

またはこの:

2.repeatWork { 
    print("Hola") 
} 
+0

おかげでたくさん! !!! – o1xhack

-1

以下のコードを入力してください。主なものは、repeatは関数名として使用できないキーワードです。

extension Int { 
func repeat1(work:() ->()) { 
    for _ in 0..<self { 
     work() 
    } 
} 

}

関連する問題