 <blockquote> <p>However upon setting the static property, the original closure gets executed. It's not the case for lazy instance properties. Why is that?</p> </blockquote> <p>What answer would satisfy you? Are you asking for someone to read Apple's mind? You're as capable of reading the Swift source code as anyone else, so go read it and see what it does. Personally, I agree with your expectation. In my opinion this behavior is a bug, and I've filed a bug report with Apple. If you agree, file one too. But I wouldn't expect anything to change if I were you. And regardless, your question can appeal only to opinion, which is not a good fit for Stack Overflow.</p> <p>In case you're curious, my bug report is number 19085421, and reads, in part:</p> <blockquote> <p><strong>Summary:</strong> A lazy var's initializer should not be evaluated at all if the var is written to without being read first. But that is what a global var does.</p> <p><strong>Steps to Reproduce:</strong> Run the enclosed project.</p> <p><strong>Expected Results:</strong> I am assigning to the global var before anyone ever reads its value. Therefore I expect that its initializer will <em>never</em> be evaluated.</p> <p><strong>Actual Results:</strong> Its initializer <em>is</em> evaluated, as the logging in the console proves. This defeats, to some extent, the purpose of laziness.</p> </blockquote>