单值元组作为 swift 中结构的最后一个成员

Single-value-tuple as last member of struct in swift

MusicPlayer 的 API 依赖可变长度数组作为结构的最后一个成员来处理传递未知大小的数据。查看为 MusicPlayer 生成的接口,此方法中使用的结构将其最后一个元素呈现在单个值元组中。

示例:

struct MusicEventUserData {
    var length: UInt32
    var data: (UInt8)
}

我怀疑这其中的任何一个都已经被正式公开,但是有没有人弄清楚这个语法是转移注意力还是真的很重要?我不认为有一种方法可以通过 swift 处理任意大小的东西,但这对从 C 调用有帮助吗?

在操场上测试后,我发现 (Int) 和 Int 类型之间没有区别。 这是我的测试:

func testMethod(param1: Int, param2: (Int)) -> Int{
    return param1 + param2
}

testMethod(2, 3) // return 5
testMethod(3, (6)) // return 9

关于C中的调用,我只是认为它是从ObjC桥接到swift

的一个小错误

MusicPlayer 不再像上面那样导出。截至 Xcode 6.3b1

typedef struct MusicEventUserData
{
    UInt32      length;
    UInt8       data[1];
} MusicEventUserData;

这更接近于 C 声明。它仍然没有完全解释如何处理 swift 中的 API 但这是另一个问题。