无法将BitArray {1}类型的对象“转换”为Int64类型的对象。朱莉娅

时间:2018-03-24 18:11:42

标签: type-conversion julia

我在朱莉娅很新,所以也许这是一个愚蠢的问题。我有以下代码:

a = [1.0, 2.0];
b = [2.2, 3.1];
Int(a.>b)

它给了我一个错误:

MethodError: Cannot `convert` an object of type BitArray{1} to an object of type Int64
This may have arisen from a call to the constructor Int64(...),
since type constructors fall back to convert methods.

Stacktrace:
 [1] Int64(::BitArray{1}) at ./sysimg.jl:77
 [2] include_string(::String, ::String) at ./loading.jl:522

命令1(a.>b)效果很好。 你能解释一下我: 为什么我的隐式转换不起作用?

1 个答案:

答案 0 :(得分:6)

a.>b的类型为BitArray{1}。使用Int(a.>b),您尝试将数组(即BitArray)转换为单个整数,这是没有意义的。

相反,您可能希望将数组的元素转换为整数:

julia> a = [1.0, 2.0];    

julia> b = [2.2, 3.1];    

julia> Int.(a.>b)         
2-element Array{Int64,1}: 
 0                        
 0                   

请注意Int.(a.>b)broadcasts转换为每个元素的点。

1(a.>b)之所以有效,是因为它被翻译为1*(a.>b)。这是数字和数组的乘法,这是一个逐元素的操作。