Julia 为多维数据集卷的自然日志创建外部构造函数
我正在学习一个Julia类,我正在尝试创建一个方法来计算用户定义类型的自然日志 我已经创建了一个参数化类型MyCubeJulia 为多维数据集卷的自然日志创建外部构造函数,julia,Julia,我正在学习一个Julia类,我正在尝试创建一个方法来计算用户定义类型的自然日志 我已经创建了一个参数化类型MyCube type MyCube{T} h::T w::T l::T end 我已经创建了两个这种类型的实例,我将它们定义为Float64,希望这能解决问题,但它没有 cube1 = MyCube{Float64}(2,3,2) cube2 = MyCube{Float64}(4,3,2) 现在尝试定义该方法 import Base.log log(u::My
type MyCube{T}
h::T
w::T
l::T
end
我已经创建了两个这种类型的实例,我将它们定义为Float64,希望这能解决问题,但它没有
cube1 = MyCube{Float64}(2,3,2)
cube2 = MyCube{Float64}(4,3,2)
现在尝试定义该方法
import Base.log
log(u::MyCube) = MyCube(log(u.h * u.w * u.l))
log(cube1)
当我尝试在cube1类型的实例上运行该方法时
log(cube1)
我得到以下错误
LoadError: MethodError: `convert` has no method matching convert(::Type{MyCube{T}}, ::Float64)
This may have arisen from a call to the constructor MyCube{T}(...),
since type constructors fall back to convert methods.
Closest candidates are:
MyCube{T}(::T, !Matched::T, !Matched::T)
call{T}(::Type{T}, ::Any)
convert{T}(::Type{T}, !Matched::T)
while loading In[33], in expression starting on line 2
in log at In[32]:2
任何帮助都将不胜感激log(u::MyCube)=MyCube(log(u.h*u.w*u.l))
您正在尝试调用cube1
上的函数(MyCube的类型构造函数)
只需log(u::MyCube)=log(u.h*u.w*u.l)
将为log
添加一个新方法,以便在您键入的MyCube上分派 应该是
log(u::MyCube) = log(u.h * u.w * u.l)
这周比我快不到一分钟两次汉克斯!,我知道这是件愚蠢的事,但我想不出来。注意,函数日志不是构造函数,因为它不创建新对象。