2013-09-24 2 views
1

Может кто-нибудь объяснить мне, почему io.write не работает, когда я удалить строкуio.write не будет работать в вложенным, если блоки и петель

io.write (inshort .. «\ п»)?

Второе определение io.output отсутствует. Является ли код слишком вложенным и io.output недействителен в каком-либо состоянии?

Я знаю DoSomething называется правильно ...

function findpos(arg0, arg1,argf) 

    io.input(arg0) 
    io.output("that.txt") 
    posicounter =0 
    posibuffer="" 
    if not arg0 then return 99 end 
    counter = 1 
    while true do 
     local line = io.read("*line") 
     if line == nil then break end 
     for k, searchstring in ipairs(arg1) do 
      found = string.find(line, searchstring)   
      if found ~=nil then 
       inshort = string.sub(line, found) 
       io.write(inshort.."\n") 
       if(inshort==posibuffer) then 
       posicounter=posicounter+1 
       elseif posicounter >0 then 
        io.write("before") 
        node = doSomething() 
        io.write("after") 
        posicounter=0 
       else 
        posicounter=0 
        posibuffer=inshort 
       end 
      end 
      argf(timestamp, string.sub(line, 24))  
      counter = counter +1 
     end 
    end 
+0

Что здесь означает «не работает»? – lhf

+0

Кроме того, можете ли вы правильно отложить код. –

+0

Какая версия Lua? Вы уверены, что 'io.input (arg0)' успешно? Не могли бы вы предоставить источник 'doSomething()'? Или это не работает с общей функцией? Несколько небольших заметок: 1. Рассмотрите возможность использования 'io.write (inshort," \ n ")' вместо имплицитного concat. 2. Не могли бы вы использовать отдельные дескрипторы файлов вместо того, чтобы обернуть некоторые внутренние логические Lua? – Kamiccolo

ответ

2

Обратите внимание, что линия вы удаляете это единственная линия, которая выводит \n характер. Вероятно, проблема, которую вы видите, заключается в том, что система ввода/вывода (операционная система или терминал или оболочка) в вашей среде откладывает вывод до тех пор, пока не увидит символ \n. I.e, выход буферизируется по строке.

+0

Спасибо, это была именно проблема – confusedandtired

+1

В качестве примечания стороны вы можете изменить буферизацию вывода с помощью 'file: setvbuf (mode [, size])' в соответствии с [ Руководство Lua] (http://www.lua.org/manual/5.2/manual.html#pdf-file:setvbuf) – jpjacobs

Смежные вопросы