是否有一种语言在变量声明时支持隐式复合类型?

时间:2018-10-27 21:40:53

标签: java c#

这个问题更笼统,并扩展到类型化的非OOP语言,但是为了有代码证明我的意图,我将坚持使用诸如C#之类的标准花括号语言。

我见过的OOP语言支持两种复合接口

interface ISyntaxNode : ISyntax, INode {}
ISyntaxNode node;
// Do stuff with node

还有一些复合类的概念

class SyntaxNode {
    // Members are public/private/partially exposed/whatever
    ISyntax code;
    INode node;
}
SyntaxNode node;
// Do stuff with node

但是在两种情况下,都需要在使用复合类型之前明确定义复合类型及其行为方式。是否有任何语言支持某些隐式复合类型的概念?例如

ISyntax INode node;

这在具有隐式接口概念的语言中会更有用/更灵活,以便您以后可以定义类似ISyntaxNode之类的内容,并且仍然使node成为其中之一而无需更改代码,但我很好奇是否有人在野外看到过这种模式。我的google-foo试图回答这个问题有点简短。

1 个答案:

答案 0 :(得分:3)

Scala中的Compound Types与您所描述的非常相似。复合类型允许在声明变量/参数时枚举类型

val myVal: Type1 with Type2 with TypeN = new Type1 with Type2 with TypeN