协议:无法在Swift中的“Y”中分配给“X”
发布时间:2020-12-14 05:39:07 所属栏目:百科 来源:网络整理
导读:我刚刚定义了一个非常简单的协议和一个使用泛型的类,它可以处理这个协议. 在标有错误的行中,您将收到错误:“无法在’aObj’中分配给’flag’. protocol Flag { var flag: Bool {get set} } class TestFlagT: Flag { func toggle(aObj: T) { if aObj.flag {
我刚刚定义了一个非常简单的协议和一个使用泛型的类,它可以处理这个协议.
在标有错误的行中,您将收到错误:“无法在’aObj’中分配给’flag’. protocol Flag { var flag: Bool {get set} } class TestFlag<T: Flag> { func toggle(aObj: T) { if aObj.flag { aObj.flag = false; // <--- error } else { aObj.flag = true; // <--- error } } } 你知道为什么以及我需要改变什么来解决它?
从
docs:
在这种情况下,您可以添加inout,以便在函数调用之外保持切换: func toggle(inout aObj: T) { if aObj.flag { aObj.flag = false; else { aObj.flag = true; } } 你也可以做到: func toggle(var aObj: T) { } 但这可能达不到你想要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |