Julia报错:LoadError: MethodError: no method matching isless(::Vector{Int64}, ::Int64)求助
解决Julia中的MethodError: no method matching isless(::Vector{Int64}, ::Int64)
报错原因
这个错误是因为你在代码中尝试将整数数组(Vector{Int64})和单个整数(Int64)直接用比较运算符(比如<=)对比,而Julia不支持这种操作——<=底层调用isless函数,没有定义数组和整数的比较方法。
从你贴的代码来看,虽然调用form(a=2, b=5, c=[0,0], ...)时,if a == 1 && b == 0这个分支不会触发,但要么是你未贴出的后续代码里存在c <= 1000这类逻辑,要么是你之前调用form时传过a=1、b=0且c为数组的参数,导致触发了@assert c <= 1000的错误。
修复方案
根据你的实际需求选择对应修正方式:
- 如果要检查数组
c中所有元素都不超过1000,把断言改成:@assert all(x -> x <= 1000, c) "error." - 如果要检查数组
c的长度不超过1000,改成:@assert length(c) <= 1000 "error." - 如果
c本来就应该是单个整数而非数组,那调用时传入整数即可,比如c=0
代码中的其他小问题
@error failed"存在语法错误,应该写成@error "failed"- Julia变量名区分大小写,你定义的是
X = [],但push!(x, ...)里用了小写x,会触发未定义变量错误,要统一改成push!(X, ...)
内容的提问来源于stack exchange,提问作者jawaria
相关产品推荐
相关产品推荐

