Go 使用函数类型实现接口的方式,其它语言有类似的实践吗?
试了下 Swift 是不行,因为 Swift 需要显示的继承 protocol 才可以。 Python 可以吗?
试了下 Swift 是不行,因为 Swift 需要显示的继承 protocol 才可以。 Python 可以吗?
Swift 好像没办法这样写的
![swift.png]( https://s1.ax1x.com/2020/10/04/0GakCR.png)
有点没太理解,主的意思是“用 xxx 语言实现‘回调模式’
例如
type Foo interface { Foo() }
type Bar func()
func (b Bar) Foo() {}
上面的代码,定义了一个名为 Bar,底层类型为 func() 的类型,这就是标题所说的“函数类型”
这个 Bar 类型还定义了一个 Foo 方法,从而实现 Foo 接口,就是标题所说“使用函数类型实现接口”
大部分静态语言都做不到给任意的类型命名,更不用说给任意类型增加方法
Haskell 是可以的,其他不清楚了
1. 对 alias 的类型,是否可以添加方法
2. 是否可以声明实现某个接口的,或者像 Golang 和 Python 这样的 duck typing
这种效果来说的话,你 c++也可以做 concept 。。。
以及 typescript 的类型系统也是允许这种情况( js 就不说了,你都不用声明类型)