私は多くの iOS ヘッダーで (^) が使用されているのを見てきましたが、その記号が使用されている理由については、今まで一度も考えたことがありません。誰かがこれを啓発したいと思うでしょうか?
ありがとう。
私は多くの iOS ヘッダーで (^) が使用されているのを見てきましたが、その記号が使用されている理由については、今まで一度も考えたことがありません。誰かがこれを啓発したいと思うでしょうか?
ありがとう。
それらはしばしば「ブロック」を示します。ブロック プログラミングのトピックを参照してください。
または、 WWDC 2012 セッション 712の冒頭を視聴すると、歴史的な文脈に触れながらブロックを案内してくれます。
ブロックを意味します。ブロックは、コールバック関数を作成し、それをパラメーターとしてメソッドに渡すことができる構文です。他の言語では、これはクロージャー、ラムダ、または匿名クラスに似ています。
たとえば、リストされているパラメーターは
void(^)(NSString *myStr)
、void を返し、NSString ポインターを受け取るブロック/関数を渡すことを期待しています。
メソッドで宣言された予期されるパラメーターに基づいて、次の構文を使用してブロックを作成できます。
^(<Parameters>) { <Body> }
たとえば、ブロック パラメーターを期待するメソッドは次のようになります。
-(void)doSomething:(void(^)(NSString *myStr))theBlock;
...そして、次のように呼び出すことができます:
[self doSomething:^(NSString *myStr) { NSLog(@"The String is: %@", myStr); }];
ブロックはdoSomething:
、パラメーター名を使用して、関数のようにコールバックされます。
-(void)doSomething:(void(^)(NSString *myStr))theBlock {
theBlock(@"Hello!");
}
...次のように表示されます。
The String is: Hello!
^ 文字はブロック、特にブロック パラメーターに使用されます。
ブロックで文字「^」を使用する理由を尋ねている場合は、残りの文字が比較的少ないためです。
それは実際には 2 つまたは 3 つだけに絞り込まれ、そのうちの '^' が選ばれた理由は、まあ、理由です。
議論を詳しく調べたい場合は、llvm.org メーリング リストなどにおそらくこれに関する記録があります。
基本的に同じプロセスを経た、ラムダに関する C++11 委員会の議事録を参照することもできます。