Я медленно проходил через https://github.com/aturley/pony-workshop/, и при выполнении последнего упражнения в 04 хотел преобразовать непересылаемый массив [U8] ref в строку. Это привело меня к:
actor Main
let _buffer : Array[U8] = ['a'; 'b'; 'c']
new create(env: Env val) =>
let b1 : Array[U8] iso = []
for v in _buffer.values() do
b1.push(v)
end
env.out.print("Got '" + String.from_iso_array(consume b1) + "'")
https://playground.ponylang.org/?gist=e7170e1f8ba2f89655279d5cd8e86e37
Я немного недоволен этим, потому что я хотел бы сделать что-то вроде 'deep_clone ()' для массива, чтобы получить iso ... но в его нынешнем виде я даже не могу добавить работать (из-за вызова ссылки с неотправляемым параметром).
Я решил проблему другим (более приятным) способом (используя chop), но все же хотел бы понять, возможно ли сделать более чистую копию массива.