Поскольку документация и учебные пособия по коллекциям в Ponylang отсутствуют, я действительно изо всех сил пытаюсь использовать класс Array и работать с индексами.
У меня есть fizzbuzz на основе сильных сторон, где есть ответственный актерзапрашивать операции fizzbuzz для других участников и собирать результаты.Возможно, шаблон, который я использую, не самый лучший, но сейчас я хотел бы повторить этот способ, чтобы узнать больше.
Моя проблема со следующим кодом:
actor FizzBuzzer
var _results:Array[String]
let _main: Main tag
fun list_to_string(l:List[String]):String=>
l.fold[String]({(a:String,b:String)=>a+"\n"+b},"")
new create(n:String, main:Main tag)=>
let num:USize = try (consume n).usize()? else 0 end
_main = main
_results = recover Array[String] end
try
let result = this.fizzbuzz(num)?
let message:String = list_to_string(result)
main.print(message)
else
main.print("Invalid argument: "+ num.string())
end
fun fizzbuzz(n:USize, acc:List[String]=List[String]()):List[String] ?=>
if n <=0 then error end
let res = List[String]()
for i in Range[USize](1,n+1) do
FizzBuzzerino.process(i,this)
end
res
be collect_result(result:String,num:USize)=>
try
_results.insert(num,result)?
else
_main.print("Error processing element: "+num.string())
end
`
Inфункция collect_result
вставка всегда завершается неудачей.Использование update
тоже самое.result
и num
, которые я получаю от обработчика, верны, но я не могу вставить их в массив.Любая вставка в массив в этом классе не выполняется.Это вопрос возможностей?Или я что-то не так делаю?