Julia MethodError:没有方法匹配take!(:: Base.AbstractIOBuffer {Array {UInt8,1}})

时间:2017-02-26 04:19:21

标签: julia

Juliabox上的Julia 0.5

为什么以下函数定义会产生以下错误:

Julia MethodError: no method matching take!(::Base.AbstractIOBuffer{Array{UInt8,1}} )

function CoinTrials(x,y; numtrials=100000, numcoins=5 )
    Yes=[]
    No=[]
    for trial in 1:numtrials
        trialresults=[]
        for coin in 1:numcoins
            result = rand(1,2)
            push(vec,trialresults)
        end 
        if len(filter(x->x==1,trialresults)) >=3
            Yes+=1

        else
            No+=1
        end 
    end
    @printf(Yes,No)
end

1 个答案:

答案 0 :(得分:2)

function CoinTrials(x,y; numtrials=100000, numcoins=5 )

...您似乎没有使用xy,所以我不确定他们为什么会来这里。

    Yes=[]
    No=[]

...因为你以后加1,为什么不制作这些整数计数器呢?

    for trial in 1:numtrials
        trialresults=[]
        for coin in 1:numcoins
            result = rand(1,2)

...这会产生一个由0和1之间的两个随机Float64组成的数组。你想要一个数组还是一个数字?

            push(vec,trialresults)

...没有push功能。有一个push!函数。您是否希望push!(trialresults, result)将最新试用版添加到试用结果列表中?

        end 
        if len(filter(x->x==1,trialresults)) >=3

...没有len功能。有一个length函数。但是,trialresults中找不到Float64s。

            Yes+=1    
        else
            No+=1
        end 
    end
    @printf(Yes,No)

...你想要一个格式字符串:@printf "%d %d" Yes No

end