我刚从Python迁移到Julia,但是Julia很难理解。我希望以后通过PackageCompiler编译包,以便以后在其他语言中使用,所以我需要能够导出C可调用方法。如果我定义以下代码:
module MyModule
export testmethod1
export testmethod2
function testmethod1(x::Cfloat, y::Cfloat)::Cfloat
return x^y*4
end
function testmethod2(x, y)
return x^y*4
end
end
设println(MyModule.testmethod2(2.3, 3.2))
,得到57.489570831681995
然而,当我调用println(MyModule.testmethod1(2.3, 3.2))
时,我得到
ERROR: LoadError: MethodError: no method matching testmethod1(::Float64, ::Float64)
但是当我输入check这些变量时,比如println(typeof(2.3))
,我得到的是Float64
!为什么朱莉娅无法匹配输入我给函数当我指定Cfloat作为数据类型?
Cfloat
是Float32
,2.3
是Float64
。请注意,您可能不应该频繁使用Cfloat
(或其他C
+类型)。这些是C互操作的别名。