Как использовать массив в пони? - PullRequest
0 голосов
/ 28 октября 2018

Поскольку документация и учебные пособия по коллекциям в 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, которые я получаю от обработчика, верны, но я не могу вставить их в массив.Любая вставка в массив в этом классе не выполняется.Это вопрос возможностей?Или я что-то не так делаю?

...