仅类型接口
Type only interfaces
有没有人碰巧知道某个程序概念是否存在于允许构建仅指定满足其实现所需的数据类型 的接口的语言中?
换句话说,实现它的 object/class 的命名约定是无关紧要的。成功实施取决于 属性 类型是否满足接口的类型定义要求。
例如,假设我有一个创建了一堆类型别名的程序。我想这样做:
# Revenue of the transaction
type Revenue = Float
# Id of the Transaction
type TransactionId = String
interface Transaction {
Revenue
TransactionId
}
# This compiles...
type MyCustomTransaction implements Transaction {
saleAmount: Revenue
id: TransactionId
myCustomProperty: Boolean
}
您所描述的是一个不太有用的协议或抽象版本 类,它定义了一个必需的接口。通过仅定义类型而不要求定义名称,接口是无用的。
这样想。我告诉你,有些对象符合 Transaction
接口。你只知道对象包含一个属性,也就是一个Revenue
和一个TransactionId
。但是您不知道如何访问它们以及它们的含义。那么你甚至可以使用该界面吗?
有一个类似于你所说的类型化元组的想法,它是一组元素,不一定像 (5,5,"Hello") 那样命名,类型为 (Int,Int ,细绳)。然而,由于元组是有序的,知道类型提供了一个 "implicit" 接口,因为你知道包含的元素的数量和类型。
如果您有兴趣,这里有更多关于协议和摘要的阅读材料 类:
https://en.wikipedia.org/wiki/Abstract_type
https://en.wikipedia.org/wiki/Concept_(generic_programming)
https://en.wikipedia.org/wiki/Protocol_(object-oriented_programming)
有没有人碰巧知道某个程序概念是否存在于允许构建仅指定满足其实现所需的数据类型 的接口的语言中?
换句话说,实现它的 object/class 的命名约定是无关紧要的。成功实施取决于 属性 类型是否满足接口的类型定义要求。
例如,假设我有一个创建了一堆类型别名的程序。我想这样做:
# Revenue of the transaction
type Revenue = Float
# Id of the Transaction
type TransactionId = String
interface Transaction {
Revenue
TransactionId
}
# This compiles...
type MyCustomTransaction implements Transaction {
saleAmount: Revenue
id: TransactionId
myCustomProperty: Boolean
}
您所描述的是一个不太有用的协议或抽象版本 类,它定义了一个必需的接口。通过仅定义类型而不要求定义名称,接口是无用的。
这样想。我告诉你,有些对象符合 Transaction
接口。你只知道对象包含一个属性,也就是一个Revenue
和一个TransactionId
。但是您不知道如何访问它们以及它们的含义。那么你甚至可以使用该界面吗?
有一个类似于你所说的类型化元组的想法,它是一组元素,不一定像 (5,5,"Hello") 那样命名,类型为 (Int,Int ,细绳)。然而,由于元组是有序的,知道类型提供了一个 "implicit" 接口,因为你知道包含的元素的数量和类型。
如果您有兴趣,这里有更多关于协议和摘要的阅读材料 类: https://en.wikipedia.org/wiki/Abstract_type
https://en.wikipedia.org/wiki/Concept_(generic_programming)
https://en.wikipedia.org/wiki/Protocol_(object-oriented_programming)