我对Julia比较陌生;我的编程通常是用C++、Python语言编写的,有时也用fortran语言编写。我的理解是,Julia缺少类似于C++的私有变量(甚至Python的“我建议您将其视为私有”的使用前导下划线的约定)。如果我有一个容器,是否有一种方法可以对我添加到容器中的对象执行约束?
考虑一个例子:假设我想要一个整数数组,并且我的约束是数组中的所有整数必须共享一个大于1的最大公因子。所以如果我把12放到数组中,任何2或3的倍数都可以加上。所以我下一步加21,最大公因子必须是3。如果我尝试加26,我会得到一个错误,因为它违反了约束。但如果我加上12和26,这将是合法的,最大公因子为2。
我意识到这是一个人为的例子,但它应该具有我希望做的所有显着特征,并且需要更少的解释。
发布于 2015-06-11 01:18:13
真正的强制只适用于immutable
类型,您可以在内部构造函数中检查任何所需的约束。在类型定义之外,没有办法添加新的内部构造函数,如果有内部构造函数,则不经过一个构造函数就无法创建实例。
然而,虽然Python中的约定是以_
开头的字段是私有的,而Julia中的一般约定是所有字段都是私有的(除非显式地记录了它们)。直接在类型的实现之外访问字段被认为是不好的风格,通常应该使用访问器函数。
https://stackoverflow.com/questions/30761370
复制相似问题