3

Objective-CにC#に似たものはありyield returnますか?

4

2 に答える 2

3

直接は存在せず、dasblinkenlightが言及しているようにfast enumeration存在しますが、かなり異なります。

Mike Ashは、2009年にこの質問に答え、ジェネレーターの実装を考え出しました(同様の概念)。

http://www.mikeash.com/pyblog/friday-qa-2009-10-30-generators-in-objective-c.html

ランタイムウィザードのかなりきちんとしたビットですが、基礎となるシステムとはまったく異なるデザインパターンを可能にするという理由だけで、必ずしもそれを採用することをお勧めするわけではありません。保守および学習曲線のコストは、実稼働環境で使用するにはかなり高額になります。

于 2012-10-12T22:28:10.663 に答える
3

No, there is nothing in Objective-C that would let you built an iterable solution that easily.

In general, fast enumeration in Objective-C is built using an entirely different mechanism from C#, Java, or C++. Adopting the protocol is relatively complex, especially compared to C# with its yield return, though it is certainly doable.

I found that Objective-C blocks provide a usable alternative to fast enumeration. Consider implementing a block-based enumeration instead of fast enumeration - it lets you program your own API using the style similar to yield return. On the flip side, the clients of your API would need to supply a block to use your enumeration. This is not ideal, but usable, especially for complex enumerators, such as ones based on trees.

于 2012-10-12T22:10:29.340 に答える