> On Dec 21, 2015, at 5:14 PM, Erica Sadun via swift-users 
> <[email protected]> wrote:
> 
> For a friend:
> 
> This won't work.
> 
> class DerpController {
>     private(set) var derp: Bool =  {
>         return _findDerp() != nil
>     }()
>     
>     private func _findDerp() -> AnyObject? {
>         return nil
>     }
> }
> 
> 
> but this works:
> 
> private func _findDerp() -> AnyObject? {
>     return nil
> }
> 
> class DerpController {
>     private(set) var derp: Bool =  {
>         return _findDerp() != nil
>     }()
>     
> }
> 
> Is it because the var member cannot depend on another member during setup? 
> Thanks in advance for insight.
> 

Yeah, instance methods can't be called until `self` is fully initialized, since 
they may themselves touch the uninitialized instance. In addition to making the 
function global, you could also make it a static method to preserve namespacing.

_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to