2017-02-26 54 views
-3

朱莉娅0.5上Juliabox朱莉娅MethodError:没有方法匹配采取(:: Base.AbstractIOBuffer {阵列{UInt8,1}})

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

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 
+2

这段代码有很多语法错误,朱莉娅0.5甚至没有接近编译它。什么是vec? printf必须将字符串字面量作为其第一个参数。请更正代码。 – Terminus

回答

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) 

...这产生两个随机Float64的0和1之间的一个数组你想一个数组或一个数字?

  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 
+0

非常感谢您的慈善回复。 这是一个可怕的尝试,写在早上凌晨完成这个功能。 我已经纠正它,在我自己的系统上运行,并收到一个新的错误。 Juliabox为我运行的任何内容抛出了错误,甚至1 + 1。 – KGS