本文介绍了构造函数接受 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-22 09:06