Julia报错一维数组使用:
报错信息:no method matching setindex!(::typeof(split), ::Float64, ::Int64)
代码功能描述:根据给定任务总数和设置的cpu核数 进行任务分配,返回任务分配int[]数组
代码示例:
# @title splitInt
# @descroption 根据给定任务总数和设置的cpu核数 进行任务分配,返回任务分配int[]数组
# @auth 张奥男 (2022/09/27)
# @param numPoints int "任务总数"
# @param numChunks int "设置的cpu核数"
# @return split []int "任务分配表"
# error "函数调用信息"
function splitInt(numPoints::Int, numChunks::Int)
if numPoints%numChunks == 0
#for i := 0; i < numChunks; i++ {
for i in 1: numChunks
split[i] = numPoints ÷ numChunks
end
else
limit = numPoints % numChunks
for j in 1: limit
split[j] =numPoints÷numChunks + 1
end
for k in limit+1: numChunks
split[k] = numPoints ÷ numChunks
end
end
print(split[2])
#return split
end
splitInt(101,4)
报错信息:no method matching setindex!(::typeof(split), ::Float64, ::Int64)
错误原因:是因为我没有指定数组的类型
修改后的代码:
# @title splitInt
# @descroption 根据给定任务总数和设置的cpu核数 进行任务分配,返回任务分配int[]数组
# @auth 张奥男 (2022/09/27)
# @param numPoints int "任务总数"
# @param numChunks int "设置的cpu核数"
# @return split []int "任务分配表"
# error "函数调用信息"
function splitInt(numPoints::Int, numChunks::Int)
#split := make([]int, numChunks)
#split[] = {0,0,0,0}array = Array{Int64}(undef, 3)
split = Array{Int64}(undef, numChunks)
if numPoints%numChunks == 0
#for i := 0; i < numChunks; i++ {
for i in 1: numChunks
split[i] = numPoints ÷ numChunks
end
else
limit = numPoints % numChunks
for j in 1: limit
split[j] =numPoints÷numChunks + 1
end
for k in limit+1: numChunks
split[k] = numPoints ÷ numChunks
end
end
print(split[2])
#return split
end
splitInt(101,4)
总结:上面错误的原因是,我没有声明 一维数组的类型,而Julia是支持一个数组存不同数据类型的,而在运算过程中有浮点数的出现,而我要求返回的是整型,故,系统报错。
Julia一维数组的声明:
split = Array{Int64}(undef, numChunks) // 含义:Int64类型 一维 numChunks个大小