[swift-users] [Possible bug] Initialising multiple instance variables from a closure

Karl razielim at gmail.com
Wed Jun 29 20:01:55 CDT 2016


Oh, I figured it out. The syntax is a bit strange, but after enough attempts I ended up at this:

	let (toolbar, aButton) : (UIToolbar, UIBarButtonItem) = {
		let toolbar = UIToolbar()
		let aButton   = UIBarButtonItem()

		return (toolbar, aButton)
	}()

Seems to work ¯\_(ツ)_/¯

Karl

> On 30 Jun 2016, at 02:57, Karl <raziel.im+swift-users at gmail.com> wrote:
> 
> Currently you can initialise a class instance variable from a closure:
> 
> let textView : UITextView = {
> 		let t = UITextView()
> 		t.translatesAutoresizingMaskIntoConstraints = false
> 		t.autocapitalizationType = .none
> 		t.autocorrectionType = .no
> 		t.spellCheckingType = .no
> 		return t
> 	}()
> 
> However, it doesn’t seem to be possible to return and initialise multiple variables from a closure:
> 
> 	let (toolbar : UIToolbar, aButton : UIBarButtonItem) = {        // ERROR: Type of expression is ambiguous without more context
> 		let toolbar = UIToolbar()
> 		let aButton = UIBarButtonItem()
> 		return (toolbar, aButton)
> 	}()
> 
> Is this something which, in theory should be supported?
> 
> Thanks
> 
> Karl



More information about the swift-users mailing list