由于缺乏有关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
是正确的,但无法将它们插入数组。此类中数组的任何插入都会失败。这是能力问题吗?还是我做错了什么?