[swift-users] Implicitly capture a mutating self

Zhao Xin owenzx at gmail.com
Fri Dec 16 02:49:08 CST 2016


What is the type of self? If it is a class, try [unowned self].

Zhaoxin






On Fri, Dec 16, 2016 at 4:33 PM, Rien via swift-users <swift-users at swift.org
> wrote:

> 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
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161216/9da123a0/attachment.html>


More information about the swift-users mailing list