[swift-evolution] [Discussion] Updating Struct Values While Looping
Dmitri Gribenko
gribozavr at gmail.com
Mon Mar 7 04:24:20 CST 2016
On Mon, Mar 7, 2016 at 12:57 AM, Paul Ossenbruggen via swift-evolution
<swift-evolution at swift.org> wrote:
> func mutate3() {
> for var &codon in codons {
> if !codon.mask {
> codon.val += r.gauss()
> }
> }
> }
> }
This would be a useful extension to the language (but it is not clear
how to define it -- do we need to hardcode the knowledge about the
MutableCollection protocol into the compiler?)
There's something you can do today, though:
extension MutableCollectionType {
public mutating func mutatingEach(mutate: (inout Generator.Element) -> Void) {
for i in self.indices {
mutate(&self[i])
}
}
}
var a = [1,2,3]
a.mutatingEach { (x: inout Int) -> Void in x += 1 }
//a.mutatingEach { $0 += 1 } // does not work, probably due to a compiler bug.
print(a)
Dmitri
--
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
More information about the swift-evolution
mailing list