如何在Pony中使用数组?

时间:2018-10-28 10:30:52

标签: ponylang

由于缺乏有关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
     `

在函数collect_result中,插入总是失败。使用update是相同的。我从处理角色收到的resultnum是正确的,但无法将它们插入数组。此类中数组的任何插入都会失败。这是能力问题吗?还是我做错了什么?

0 个答案:

没有答案