2017-02-26 55 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