即使在使用$ stdin.iflush刷新后,输入缓冲区也不会被刷新

时间:2014-08-21 12:30:05

标签: ruby file io flush gets

我写了一个项目,其中有一个类(比如说Class1)。

class Class1
    attr_accessor :file_var
    def initialize(input_file)
                    @file_var = YAML.load_file(input_file)
            end
    .....some member function in which I read the input_file using file_var......
    end

现在我将Class2中Class1的对象作为成员

class Class2
 attr_accessor :f

     def initialize(input_file)
                   f = Class1.new(input_file)     
        end
        .....some member function in which I am using the read items from input_file......
        end
    end

直到这一点它工作正常,但当我向Class2添加一个成员函数时,我使用以下3条指令从用户那里获取输入

puts "Enter the input"
$stdin.iflush #instead of this I used other flush commands also listed on Google but it didn't work.
input = gets.chomp

现在主要的问题是它没有让我停止输入,上面的命令是循环的,所以它甚至没有停止一次让我给出输入,它自动填充输入输入缓冲区。

当我显示存储在gets中的值时,令人惊讶的是它显示了从input_file读取的file_var(class1的data_accessor)的数据(我将其作为参数提供给它的构造函数)。我不知道这些数据是如何产生的。此外,我想到关闭文件缓冲区file_var,但根据此程序的要求,它是不可能的。

欢迎解决方案!!!

0 个答案:

没有答案