d覆盖指定方法
原文
想表达插入
指定的mixin
模板到子类
中,但是说的是,要覆盖
指定方法.因此开发人员,可只覆盖
方法而不实际插件(mixin)
到mixin
模板中.
如果可表达,在每个子类中,可求值指定的mixin
模板,那就太好了.使用class mixin Foo;
import std;
mixin template Foo()
{
void fancyMethod(){
writeln(__traits(identifier, typeof(this)));
}
}
class Animal {
class mixin Foo;//这里
}
class Dog : Animal {}
class Bulldog : Dog {}
void main() {
new Animal().fancyMethod();
new Dog().fancyMethod();
new Bulldog().fancyMethod();
}
有this
参数可模拟:
import std;
void main()
{
new Animal().fancyMethod();
new Dog().fancyMethod();
new Bulldog().fancyMethod();
}
class Animal {
void fancyMethod(this This)(){
writeln(__traits(identifier, This));
}
}
class Dog : Animal {}
class Bulldog : Dog {}
//输出:
Animal
Dog
Bulldog
通过在子类
内重新声明方法
来覆盖
.
然而问题
是方法
只是模板
,如,它们像UFCS
函数一样工作,只知道被调
类型,而不知道实际
类型.如果把斗牛犬
转换为Animal
,会按模板参数
用动物来调用fancyMethod
.(这打破了一堆OOP
模式和使用继承
优点)
一些插件
到子类
中的方法,对很多事情来说都是非常好的,但如果用户
需要显式
插件额外方法会更好
,这样就不会神奇
地出现.(+显式 插件
可指定额外的选项)
值得研究
机制来要求用户必须mixin
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现