これはアップルブロックのドキュメントからのもので、これを理解するのに苦労しています。誰か説明してください
ブロック式の戻り値を明示的に宣言しない場合、ブロックの内容から自動的に推測できます。戻り値の型が推定され、パラメーター リストが void の場合は、(void) パラメーター リストも省略できます。複数の return ステートメントが存在する場合、それらは完全に一致する必要があります (必要に応じてキャストを使用します)。
これはアップルブロックのドキュメントからのもので、これを理解するのに苦労しています。誰か説明してください
ブロック式の戻り値を明示的に宣言しない場合、ブロックの内容から自動的に推測できます。戻り値の型が推定され、パラメーター リストが void の場合は、(void) パラメーター リストも省略できます。複数の return ステートメントが存在する場合、それらは完全に一致する必要があります (必要に応じてキャストを使用します)。
1)ブロック式の戻り値を明示的に宣言しない場合、ブロックの内容から自動的に推測できます。
ブロック
void ^(float aFloat) {
printf("value is :%f",aFloat);
};
のように書くこともできます
^(float aFloat) {
printf("value is :%f",aFloat);
};
戻り値の型は言うまでもありません。戻り値の型は自動的に推測されます。これは、非 void 値を返すブロックに当てはまります。
2)戻り値の型が推測され、パラメーター リストが void の場合、(void) パラメーター リストも省略できます。
ドキュメントは具体的に
引数を取らないブロックは、引数リストで void を指定する必要があります。
この種のブロックは可能だと思います。
^{
printf("Hello world");
}
戻り値が推測される場所であり、そのため、void は必要ありません。これについてはよくわからないので、説明をお願いします。
3)複数の return ステートメントが存在する場合、それらは (必要に応じてキャストを使用して) 正確に一致する必要があります。
簡単に言えば、ブロックは 1 種類のデータのみを返さなければならないということです。intとfloat を返すことはできません。