相关疑难解决方法(0)

尽管显示方法(...)仍未找到功能签名

我是朱莉娅的新手,所以这可能是微不足道的.

我在一个看起来像的模块中有一个函数定义(使用URIParser):

function add!(graph::Graph,
              subject::URI,
              predicate::URI,
              object::URI)
    ...
end
Run Code Online (Sandbox Code Playgroud)

在模块之外,我打电话给:

add!(g, URIParser.URI("http://test.org/1"), URIParser.URI("http://test.org/2"), URIParser.URI("http://test.org/1"))
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

ERROR: no method add!(Graph,URI,URI,URI)
 in include at boot.jl:238
 in include_from_node1 at loading.jl:114
at /Users/jbaran/src/RDF/src/RDF.jl:79
Run Code Online (Sandbox Code Playgroud)

奇怪的.因为当我能看到匹配的签名时:

julia> methods(RDF.add!)
# 4 methods for generic function "add!":
add!(graph::Graph,subject::URI,predicate::URI,object::Number) at /Users/jbaran/src/RDF/src/RDF.jl:29
add!(graph::Graph,subject::URI,predicate::URI,object::String) at /Users/jbaran/src/RDF/src/RDF.jl:36
add!(graph::Graph,subject::URI,predicate::URI,object::URI) at /Users/jbaran/src/RDF/src/RDF.jl:43
add!(graph::Graph,statement::Statement) at /Users/jbaran/src/RDF/src/RDF.jl:68
Run Code Online (Sandbox Code Playgroud)

起初我以为这是我对object :: Union(...)的使用,但即使我用Number,String和URI定义了三个函数,我也会遇到这个错误.

有什么明显的东西让我失踪吗?顺便说一下,我正在使用Julia 0.2.1 x86_64-apple-darwin12.5.0.

谢谢,

julia

6
推荐指数
1
解决办法
255
查看次数

如何在Julia中为现有函数添加方法?

所以在Julia中,每个函数都有方法.

以下是有道理的:

f(x, y) = x + y
f(x) = x + 2
Run Code Online (Sandbox Code Playgroud)

这提供了两个附加到此功能的方法.

但是,假设我想在现有的Julia函数中添加一个方法,而不是覆盖它.

例如:

a = [2, 3]
push!(a, 4)
a == [2, 3, 4] # true

type Node
   children :: Array{Node}
end

function push!(base :: Node, child :: Node)
   push!(base.children, child)
end
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的; 扩展现有功能以适应新类型.但这会引发错误.这可能吗?

methods julia

3
推荐指数
1
解决办法
1122
查看次数

标签 统计

julia ×2

methods ×1