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

时间:2015-01-26 04:16:53

标签: swift core-audio coremidi

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

示例:

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

我怀疑这是否已被正式曝光,但有没有人想出这种语法是红鲱鱼还是真的很重要?我不认为有办法通过swift处理任意大小的东西,但这在从C调用时有帮助吗?

2 个答案:

答案 0 :(得分:1)

在操场上测试后我可以看到(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的桥接是一个小错误

答案 1 :(得分:0)

不再按上述方式导出MusicPlayer。截至Xcode 6.3b1

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

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