10

我正在尝试运行以下代码:

function inversePoly(A::Array{Int64,1}, B::Array{Int64,1})
    n = size(A)
    retVal = A[end] / B[end]
    i = 1
    while i != n
        retVal = (retVal + 1 / B[n - i]) * A[n - i]
        i += 1
    end
    return retVal
end

inversePoly(Array(3:4), Array(4:5))

但是,朱莉娅给了我以下错误:

LoadError: MethodError: no method matching -(::Tuple{Int64}, ::Int64)
Closest candidates are:
  -(!Matched::Complex{Bool}, ::Real) at complex.jl:298
  -(!Matched::Missing, ::Number) at missing.jl:97
  -(!Matched::Base.CoreLogging.LogLevel, ::Integer) at logging.jl:107
  ...
in expression starting at /home/francisco/Julia/abc.jl:12
inversePoly(::Array{Int64,1}, ::Array{Int64,1}) at abc.jl:6
top-level scope at none:0

第6行将是

retVal = (retVal + 1 / B[n - i]) * A[n - i]

这意味着该声明

n = size(A)

在变量 n 中保存一个元组而不是一个整数

如何获得表示 A 中元素数量的整数?

提前致谢

4

1 回答 1

21

以下是您应该如何使用size

julia> x = [1,2,3]
3-element Array{Int64,1}:
 1
 2
 3

julia> size(x)
(3,)

julia> size(x)[1]
3

julia> size(x, 1)
3

因此,要么从中提取第一个元素,要么通过作为第二个参数size(x)传递来直接指定要提取的维度。1

在您的情况下,您也可以使用(它是AVector维的)length

julia> length(x)
3

它直接给你一个整数。

length和之间的区别size如下:

  • length为集合(不仅是数组)定义并返回一个整数,该整数为您提供集合中元素的数量
  • size返回 aTuple因为通常它可以应用于多维对象,在这种情况下,元组的元素与对象的维度一样多(因此,在 的情况下Vector,如您的问题所示,它是 1 元素元组)
于 2019-08-15T19:48:20.723 回答