Oop Julia中重新定义类型:常量的重新定义无效
假设我在Julia中指定了一个类型Oop Julia中重新定义类型:常量的重新定义无效,oop,types,julia,Oop,Types,Julia,假设我在Julia中指定了一个类型Person: type Person name::String male::Bool age::Float64 children::Int end function describe(p::Person) println("Name: ", p.name, " Male: ", p.male) println("Age: ", p.age, "
Person
:
type Person
name::String
male::Bool
age::Float64
children::Int
end
function describe(p::Person)
println("Name: ", p.name, " Male: ", p.male)
println("Age: ", p.age, " Children: ", p.children)
end
ted = Person("Ted",1,55,0)
describe(ted)
它将与函数一起输出:
Name: Ted Male: true
Age: 55.0 Children: 0
然后我修改了typePerson
的特性,在这里我向typeeyes
type Person
name::String
male::Bool
age::Float64
children::Int
eyes::String
end
ted = Person("Ted",1,55,0,brown)
如果我现在运行这个函数,我会得到一个错误
Error evaluating REPL:
invalid redefinition of constant Person
in include_string at loading.jl:97
在开发新代码时,解决这个问题的最佳方法是什么?除了按照中的建议制作模块外,如果您不想将代码放入自己的模块中,还可以使用该功能清除主模块。为什么不制作模块?清除
主
模块的功能是否更符合您的要求?@ToivoHenningsson是的,这就是我要找的。您必须将其添加到脚本上方。你可以把它写在答案里,我来核对一下。谢谢这对于在中编辑代码尤其令人沮丧,因为重新运行定义类型的单元格会导致错误…:/这似乎在不断变化(例如,请参阅)。Review.jl()似乎是当前处理此问题的流行方式。修复julia编译器实际上是“开发新代码时解决此问题的最佳方法是什么?”的最佳答案。是否可以只为类型Person定义一个定义?所以Person的声明可以是取消定义Person
类型Person。。。结束
?抱歉,没有。但是为您的测试代码创建一个模块确实是一个非常方便的方法,可以在不清除所有内容的情况下重新加载它,我认为如果您删除了该类型,这将是最好的解决方案。您能在单个ipynb
文件中创建单独的模块吗?模块根本不与文件绑定,当然。这在最近版本的《朱莉娅》中被删除了