struct MyStruct { static var x = myX() lazy var y = myY()}func myX() -> String { print("myX is running") return ""}func myY() -> String { print("myY is running") return ""}MyStruct.x = "X"var myStruct = MyStruct()myStruct.y = "Y"print("Done")
prints:
myX is running
Done
In other words static lazy variable gets initialized just before assigning, while instance property is just assigned.