Julia: ERROR: LoadError: MethodError: Cannot ' convert ' typ



我试图通过Einsum包乘两个数组(使用元编程)。如果我使用@einsum宏与结构体的元素,但如果我事先复制元素,则不会得到以下错误。有人能解释一下吗?

using Einsum
struct MyStruct
a::Array
end
s1 = MyStruct(rand(5, 2))
s2 = MyStruct(rand(6, 2))
# does not work (ERROR: LoadError: MethodError: Cannot `convert` an object of type Expr to an object of type Symbol)
@einsum result[i, j] := s1.a[i, k] * s2.a[j, k]
# does work
s1_a = s1.a
s2_a = s2.a
@einsum result[i, j] := s1_a[i, k] * s2_a[j, k]

@einsum假设,在它使用的函数extractindices中,数组是简单的名称(即Symbols1_a),而不是像s1.a或函数调用之类的表达式。它的编写根本没有考虑到表达式的索引。Einsum包已经4年没有更新了,可能有其他的包可以做到这一点。

最新更新