[swift-users] Implicitly capture a mutating self

Rien Rien at Balancingrock.nl
Fri Dec 16 02:33:41 CST 2016


How about using:

UnsafeMutablePointer<TypeOfSelf>

?

Regards,
Rien

Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Swiftrien
Project: http://swiftfire.nl




> On 16 Dec 2016, at 09:10, Richard Wei via swift-users <swift-users at swift.org> wrote:
> 
> Capturing makes it immutable, which unfortunately can't solve this problem.
> 
> -Richard
> 
>> On Dec 16, 2016, at 02:05, Zhao Xin <owenzx at gmail.com> wrote:
>> 
>> I did not test the code. But if you cannot implicitly capture a mutating self, you should do it explicitly, right?
>> 
>> let blockSize = min(512, count)
>> let blockCount = (count+blockSize-1)/blockSize
>> device.sync { [self] () -> () in // Launch CUDA kernel
>>     try! fill<<<(blockSize, blockCount)>>>[
>>         .pointer(to: &self), .value(value), .value(Int64(count))
>>     ]
>> }
>> 
>> Hope above code works.
>> 
>> Zhaoxin
>> 
>> On Fri, Dec 16, 2016 at 3:46 PM, Richard Wei via swift-users <swift-users at swift.org> wrote:
>> Hi,
>> 
>> Swift 3.0.2 seems to have broken my code due to mutating self capture. But I have to pass inout self to the closure. Any workaround?
>> 
>>     let blockSize = min(512, count)
>>     let blockCount = (count+blockSize-1)/blockSize
>>     device.sync { // Launch CUDA kernel
>>         try! fill<<<(blockSize, blockCount)>>>[
>>             .pointer(to: &self), .value(value), .value(Int64(count))
>>         ]
>>     }
>> 
>> <PastedGraphic-1.png>
>> 
>> -Richard
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
>> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users



More information about the swift-users mailing list