由于缺少 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
是一样的。我从处理参与者那里收到的result
和num
我是正确的,但我无法将它们插入到数组中。在此类中的 Array 中的任何插入都会失败。是能力问题吗?还是我做错了什么?