swift - The Prototype Pattern

来源:互联网 发布:c 递归算法 全排列 编辑:程序博客网 时间:2024/06/07 22:08

import Foundation


class Sum : NSObject, NSCopying {

   var resultsCache: [[Int]];

   var firstValue:Int;

   var secondValue:Int;

    

   init(first:Int, second:Int) {

       resultsCache = [[Int]](count:10, repeatedValue:

            [Int](count:10, repeatedValue:0));

       for i in 0..<10 {

           for j in 0..<10 {

               resultsCache[i][j] = i + j;

            }

        }

       self.firstValue = first;

       self.secondValue = second;

    }

    

   private init(first:Int, second:Int, cache:[[Int]]) {

       self.firstValue = first;

       self.secondValue = second;

       resultsCache = cache;

    }

    

   var Result:Int {

       get {

            returnfirstValue < resultsCache.count

                && secondValue <resultsCache[firstValue].count

                ? resultsCache[firstValue][secondValue]

                :firstValue + secondValue;

        }

    }

    

   func copyWithZone(zone: NSZone) -> AnyObject {

       return Sum(first:self.firstValue,

            second:self.secondValue,

            cache:self.resultsCache);

    }

}


var prototype =Sum(first:0, second:9);

var calc1 = prototype.Result;

var clone =prototype.copy()as! Sum;

clone.firstValue =3; clone.secondValue =8;

var calc2 =clone.Result;


println("Calc1:\(calc1) Calc2:\(calc2)");


0 0