本文介绍了构造函数接受 Integer 但不接受 String的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这行得通:
struct Comic
endpoint::String
end
function Comic(id::Int)
url = "https://xkcd.com/$id/info.0.json"
Comic(url)
end
Comic(1)
它返回Comic("https://xkcd.com/1/info.0.json")
.
这不起作用:
struct Comic
endpoint::String
end
function Comic(id::String)
url = "https://xkcd.com/$id/info.0.json"
Comic(url)
end
Comic("1")
它会杀死 Julia 进程.
It kills the Julia process.
为什么第二个例子不起作用?
Why doesn't the second example work?
推荐答案
在你的代码中 Comic("1")
调用 Comic(id::String)
.
In your code Comic("1")
calls Comic(id::String)
.
Comic(id::String)
调用 Comic(url)
这又意味着调用 Comic(id::String)
Comic(id::String)
calls Comic(url)
which again means calling Comic(id::String)
所以你只是以一个无限的递归循环结束.
So you simply end up with an endless recursive loop.
这篇关于构造函数接受 Integer 但不接受 String的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!