Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 为多维数据集卷的自然日志创建外部构造函数_Julia - Fatal编程技术网

Julia 为多维数据集卷的自然日志创建外部构造函数

Julia 为多维数据集卷的自然日志创建外部构造函数,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

我正在学习一个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::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)

这周比我快不到一分钟两次汉克斯!,我知道这是件愚蠢的事,但我想不出来。注意,函数日志不是构造函数,因为它不创建新对象。