[swift-users] inout params seem to have undefined behavior
Karl Pickett
karl.pickett at gmail.com
Sat Jun 11 12:29:27 CDT 2016
I don't believe the (spartan) docs address this case:
func foo(inout a: [Int], inout b: Int) {
let acopy = a
a = [4, 5, 6]
print(acopy) // prints "[1, 2, 3]"
b = 99
print(a) // prints "[4, 5, 6]"
print(acopy) // prints "[1, 2, 99]" (e.g. a let variable changed!)
}
var arr = [1,2,3]
foo(&arr, b: &arr[2])
print(arr) // prints "[4, 5, 6]"
Is this code "undefined", meaning the spec / doc doesn't specifically
say what should be happening? For instance, I can't believe a let
variable gets changed. The docs also say inout changes the original
value when the function ends, not in the middle as is happening here.
More information about the swift-users
mailing list