我有一个非常简单的类结构,其中有一个" abstract"基类$remaining_sms = substr($data, strpos($data, "|") + 1);
echo $remaining_sms;
在几个具体的子类中实现。在我的例子中,基类表示对象的公共接口,因此为简单起见,大多数类型引用纯粹是Node
。
但是我现在要做的是在抽象Node
上实现对ExpressibleByStringLiteral
的支持,以便在解释Node
时我可以实例化一个特定的(我选择的)具体子类作为String
。
问题是Node
似乎并不想让我这样做,因为它需要我实现一个必需的初始化器而不是静态函数(这会更有意义,imo)。我已经能够在其中一个具体的子类上工作,但鉴于具体的类型很少被明确使用(事实上我不喜欢它),这对我来说没用。 ,因为所有内容都通过基础ExpressibleByStringLiteral
类型。
我想要的是能够做到这一点:
Node
由于子类 仍然是let node: Node = "textual representation of a node"
,这并不违反任何面向对象的原则,但Swift似乎并不想让我这样做。
有没有办法解决这个问题,或者这只是Node
的限制?