【发布时间】:2016-12-22 21:02:19
【问题描述】:
我已经定义了一个Container 类。在@values 属性中,我需要存储一个数组或二维数组,这些数组中的元素可以是 Int32 或 Float64。如果我这样初始化它:
class Container
def initialize(value)
@values = values
end
end
我收到一个错误:@values : Type, is inferred from assignments to it across the whole program.
如果我这样定义:
class Container
def initialize(value : Array)
@values = values
end
end
我得到:can't use Array(T) as the type of instance variable @values of Container(T), use a more specific type
我怎样才能让这个类更灵活,这样我才能做到:
Container.new([1,2,3])
Container.new([1.0, 3.0, 4.0])
Container.new([[1, 2], [4,3,2],[1]])
Container.new([[1.0, 4.5], [2.2, 0.0]])
【问题讨论】:
-
Container 的用例是什么?你能用它做什么?
-
目标是能够将其用作 numpy ndarray,如果它是方形的,则能够对其应用一些矩阵运算,如果它们的形状允许,则可以在 ndarray 之间进行运算,并使用每个元素的类型和数组的形状。问题在于元素的类型。正如我上面写的,我找不到如何使它适用于 1D 和 2D 数组,以及 32Int 和 64Float
标签: crystal-lang