Ich habe ein Programm wie folgt:
%Vor%Es gibt einen Kompilierungsfehler in Xcode: Kann keiner Variablen zugewiesen werden, die durch Kopie in einem nicht veränderbaren Lambda erfasst wurde.
Meine Frage ist: Wenn wir die Kopie verwenden (mit "=" oder Wertname), kann diesem Wert kein neuer Wert zugewiesen oder geändert werden?
In einem Lambda sind erfasste Variablen standardmäßig unveränderlich. Das hängt nicht von den erfassten Variablen oder der Art und Weise ab, wie sie erfasst wurden. Der Funktionsaufrufoperator des Schließungstyps wird stattdessen als const
:
Dieser Funktionsaufrufoperator oder diese Operatorvorlage wird als
const
deklariert. (9.3.1) wenn und nur wenn der Lambda-Ausdruck parameter-declaration-clause wird nicht gefolgt vonmutable
.
Wenn Sie also die erfassten Variablen innerhalb des Körpers ändern möchten, ändern Sie einfach das Lambda in
%Vor%, damit der const
-Infikator entfernt wird.