1

クラス{$0 > 1}への呼び出しで短い形式のクロージャを使用したい:NSIndexSet

let indexSet: NSIndexSet = getSomeIndexSet()
let filteredIndexSet = indexSet.indexesPassingTest(){$0 > 1}

しかし、それは私に与えます

タイプ '((_) -> _)' の引数リストで 'indexesPassingTest' を呼び出すことはできません

しかし、これは機能します。indexSet.indexesPassingTest(){(i,s) in i > 1}ただし、型名はまだありません。

それはバグですか、それとも何か不足していますか?

4

1 に答える 1

5

エラーメッセージは、あなたが間違っていることを示しています。ブロックに渡される引数は、タプルである単一の引数ではなく、2 つの異なる引数ではありません。したがって、タプルから各要素にアクセスする必要があります。

Martin R のコメントに基づいて、クロージャーは 2 つの引数と一致する必要があるようです。したがって、$0 または $1 を使用できます。一方だけを使用すると、$0 がタプルになります。

let filteredIndexSet = indexSet.indexesPassingTest { $0.0 > 20 }

$0.0は、インデックスであるタプルの最初の項目を意味します。

于 2015-06-20T13:17:07.410 に答える