问:让我们写了以下几行:
var d6 = Dice(sides: 6, generator: LinearCongruentialGenerator())
我想知道为什么我们需要在协议LinearCongruentialGenerator之后编写括号(),特别是因为在前面的示例中我们不必这样做,例如Blendable的示例:
let ingredients: [Blendable] = [strawberry, chocolateMilk]
答:LinearCongruentialGenerator是一个类,您需要创建该类的实例,因此可以使用:(LinearCongruentialGenerator()仅当您不指定任何其他初始化程序时),该类符合协议,而不是协议本身。