我很好奇,有没有一个预先存在的协议,它的唯一要求是没有参数的init
?我正在创建一个泛型,它需要能够在不担心任何参数的情况下初始化关联类型.这似乎需要一个这样的协议:
protocol HasEmptyInitializer {
init()
}
这似乎是一个非常基本的协议,在许多情况下都可能需要.在我用上面的内容污染我的协议空间之前,我想知道基金会或其他第一方库中是否已经有类似的东西了.有没有人知道这样的事情?
我很好奇,有没有一个预先存在的协议,它的唯一要求是没有参数的init
?我正在创建一个泛型,它需要能够在不担心任何参数的情况下初始化关联类型.这似乎需要一个这样的协议:
protocol HasEmptyInitializer {
init()
}
这似乎是一个非常基本的协议,在许多情况下都可能需要.在我用上面的内容污染我的协议空间之前,我想知道基金会或其他第一方库中是否已经有类似的东西了.有没有人知道这样的事情?
这是一个非常著名的非协议,因为它缺乏语义.有关为何这故意不是SWIFT中的协议的背景信息,请参阅Ole Begemann‘s Writeup Protocols are more than Bags of Syntax.如果您有一个语义上有意义的协议,并且只有这个要求,那么创建它是没有问题的,但它是相当罕见的.
OLE的写作(汇集了许多其他对话)的基本观点是,协议不仅仅是"它有这个方法"(即语法).这是关于它促进了什么样的算法."+"不是一个很好的协议来覆盖"你可以应用+的东西".+对Ints的意义与+对Collection的意义并不相同(后者甚至不是可交换的).类似地,"Makable by call init()"不会告诉您任何关于结果对象的含义.是"空的吗?"一些未指明的"默认"值?无效?协议的语义比语法更重要.