AJS
AJS

Reputation: 3

Swift ambiguous reference to member '-' in array joining

I'm running into some issues creating an array out of other arrays and slices of other arrays. All arrays referenced here are internal static let [UInt16] declared earlier. They are all contained in the same struct.

internal static let bigarray = [UInt16]([0, array1, array2, array3, array4, array5, [UInt16](array6.prefix(upTo: array6.count-8))].joined())

If the stuff involving array6 is removed, everything is hunky-dory. But as soon as I add the array6 slice, Swift complains that the - (minus) operator is ambiguous. How is this possible? Since array6.count and 8 are both Ints, shouldn't it just do simple integer subtraction and pass that as the upTo argument for prefix?

Upvotes: 0

Views: 669

Answers (1)

Martin R
Martin R

Reputation: 539685

The error message is misleading. The real problem is that the first element 0 in the "array of arrays"

[0, array1, array2, ... ]

is not an array, but a number. Changing that to [0] should solve the problem. Note that the expression can be simplified slightly to

let bigarray = [[0], array1, array2, array3, array4, array5, Array(array6.dropLast(8))].joined()

Upvotes: 1

Related Questions