【发布时间】:2016-07-08 12:36:18
【问题描述】:
为了练习 Julia,我正在使用迭代器接口实现一个包含一些固定步长 ODE 求解器(Euler、Runge Kutta、Bulirsch Stoer)的小模块。
我的想法是使用多次调度将函数 next 的正确方法应用于特定的迭代器,但是 Euler 和 Runge Kutta 迭代器类型(实际上是 immutable)旧的数据相同。
所以我必须选择:
- 创建两个相同的
immutable类型,除了名称或 - 用一个额外的字段(比如
solving_method)创建一个唯一的immutable,并使用分支而不是多个调度来解决这个问题
这两种选择对我来说都显得笨拙(尤其是第二种,因为每次迭代都会检查 solving_method 字段)。
阅读有关 Julia 继承的在线讨论后,我了解到 Julia 没有(也永远不会有)具体类型的子类型,这意味着不能“向父类型添加字段”大大地。
但是为什么我不能仅仅为了调度目的而拥有具体类型的子类型呢?
【问题讨论】:
标签: julia