F#的火星人问题
还没有试过F#,不过一直很感兴趣也看了不少介绍,刚刚想到一个问题,找了一圈也没找到到哪里提问,就先发到博客上来吧。
从之前的阅读学习到,F#中属性的值不能改变(因为我之前用的C#,所以就借用C#里的名词啦),要修改属性时就得重新创建这个对象。
那这样想想的话不是会引起整个引用链的重建吗……?
比如这样一个数据结构:
公司 -< 部门 -< 人员
如果我想改一个人员的名字,那就得重建这个人员,这样就得再修改部门的人员集,再把这个新建人员替换原来的那个,修改部门的人员集属性就得重建部门实例吗?那接下来就还得重建公司实例,再继续岂不是要把所有有引用关系的实例都重建……?