Ho una domanda sulla sintassi delle variabili __block
. So che è possibile utilizzare __block
su una variabile in ambito, quindi non è di sola lettura all'interno del blocco. Tuttavia in un punto nel apple docs, ho visto in alternativa:.Sintassi alternativa a __block?
"Variabili nel campo di applicazione che definisce sono di sola lettura per impostazione predefinita quando utilizzato in un blocco Se è necessario modificare il valore di tale variabile, può usare una sintassi particolare:
int count = 0;
float cumulativeValue = 0.0;
UpdateElements(a, N, ^(float element){
|count, cumulativeValue|
float value = factor * element;
++count;
cumulativeValue += value;
return value;
});
in questo esempio, contare e cumulativeValue vengono modificati all'interno del blocco, in modo che sono inclusi in elenco separato da virgole di variabili condivise all'inizio del blocco dello scope.
Questa sintassi sembra molto più pulita e presumo che sia quindi possibile modificare le variabili che non si sono dichiarate ma che sono ancora in ambito. Tuttavia, non ho visto questo da nessun'altra parte e al compilatore xCode non piace il mio blocco di base. Questa sintassi è legittima?
Molto interessante! Grazie per la cronologia –
Quindi, qualche idea del perché la documentazione sia stata scritta prima di aver formalizzato la sintassi? – CodaFi
Se la gente della documentazione non riesce a capire come spiegare qualcosa in modo coerente, è un segno sicuro che il design è seriamente imperfetto, quindi sono coinvolti nelle prime fasi del processo di progettazione. Questa documentazione potrebbe essere stata originariamente prodotta per il WWDC in cui sono stati annunciati per la prima volta i Blocks. – bbum