Equatable, DRY , 2 , , <= .
, , , .
class A {
    var identifier: String?
    var quantity: Int = 0
    init(identifier: String, quantity: Int) {
        self.identifier = identifier
        self.quantity = quantity
    }
}
let a1: A = A(identifier: "1", quantity: 1)
let a2: A = A(identifier: "2", quantity: 2)
let a3: A = A(identifier: "3", quantity: 3)
let a4: A = A(identifier: "4", quantity: 4)
let a5: A = A(identifier: "1", quantity: 1)
let a6: A = A(identifier: "2", quantity: 2)
let a7: A = A(identifier: "3", quantity: 3)
let a8: A = A(identifier: "4", quantity: 4)
var array1: [A] = [a1, a2, a3, a4]
var array2: [A] = [a5, a6, a7, a8]
func areEquals(array1: [A], array2: [A]) -> Bool {
    if array1.count < array2.count {
        return false
    }
    for i in 0...array2.count - 1 {
        if array1[i] != array2[i] {
            return false
        }
    }
    return true
}
extension A: Equatable {
    static func ==(lhs: A, rhs: A) -> Bool {
        
        return lhs.identifier == rhs.identifier
    }
}
