2013-09-02 15 views
5

Wdrażam lua iterator i zastanawiam się, co to jest fabryka iteratora (funkcja, która tworzy zamknięcie, które jest używane do iteracji po iteracyjnej, zobacz list_iter na http://www.lua.org/pil/7.1.html) powinien powrócić w przypadku, gdy nie ma nic do powtórzenia.Co powinieneś przywrócić fabrykę lua iteratorowi, jeśli nic nie trzeba powtórzyć?

E.g. powiedzmy, że zaimplementowałbym typ listy, a mój obiekt listy nie miałby w ogóle żadnych wpisów. Tak więc przypuszczam, że ciało nigdy nie było odwiedzane, a wykonywanie skryptu trwa tak, jakby nic się nie stało.

W tej chwili zwracam nil, a Lua (jit) narzeka na attempt to call a nil value. To samo stanie się, jeśli nie zwrócę wartości zwracanej.

Odpowiedz

4

Możesz powrócić zamknięcie zwracającą nil takiego:

function nil_iter() 
    return function() return nil end 
end 
Powiązane problemy