A variable needs to know about other variable values
Delay expensive tasks(需要耗費大量效能的任務)
比使用 Computed Property 好,因為 lazy 算過一次後就會把結果存下來
import Foundation
struct Calculator
{
static func calculateGamesPlayed() -> Int
{
var games: [Int] = []
for i in 1...4000 { games.append(i) }
return games.last!
}
}
struct Player
{
var name: String
var team: String
var position: String
// MARKL: - A variable needs to know about other variable values
lazy var introduction =
{
return "Now entering the game: \(name), \(position) for the \(team)"
}()
// MARK: - Delay expensive tasks
lazy var gamesPlayed =
{
Calculator.calculateGamesPlayed()
}()
}
var jordan = Player(name: "Michael Jordan",
team: "Bulls",
position: "Shooting Guard")
print(jordan.introduction)
print(jordan.gamesPlayed)