!@TQFDJBMJ[F public class Game : Playable { var t : T public init (_ v : T) {t = v} @_specialize(Int) public func play() { for _ in 0...100_000_000 { t = t.ping() } } }
public protocol Pingable { func ping() -> Self } public protocol Playable { func play() } extension Int : Pingable { public func ping() -> Int { return self + 1 } } public class Game : Playable { var t : T public init (_ v : T) {t = v} @_specialize(Int) public func play() { for _ in 0...100_000_000 { t = t.ping() } } } Game(10).play() Application.swift Framework.swift
3FGFSFODFT w 8SJUJOH)JHI1FSGPSNBODF4XJGU$PEF IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT0QUJNJ[BUJPO5JQTSTU w 8IPMF.PEVMF0QUJNJ[BUJPOJO4XJGU IUUQTTXJGUPSHCMPHXIPMFNPEVMFPQUJNJ[BUJPOT w TBGY4XJGU4QFDJBMJ[F4BNQMF