Ruby 问个初级问题

shangchen · 2013年04月20日 · 最后由 shangchen 回复于 2013年04月20日 · 2197 次阅读

puts "请输入要查找的字符串:" str=gets

希望是打印提示信息然后等待输入,但是为什么每次执行都是输入完成后才打印提示信息呢? 我是放在一个类的 initialize 函数里面的,有什么关系吗?

完整的代码可以看么。?

不在 initialize 方法里面 运行一次试试呢?

STDOUT.sync = true 加在你代码的最前面就行了

#coding: gbk

#在指定文件中查找需要的文本信息,并将所在行打印出来

class Text_finder @filename @target @line_nums @lines

def initialize @line_nums=[] @lines=[] set_filaname set_target find end

def set_filaname puts "请输入目标文件名,包括绝对路径,在相同目录下可省略路径" @filename=gets().chomp end

def set_target puts "请输入要查找的字符"
@target=gets().chomp end

#打印查找的结果 def result puts "\n"+"*"*80 puts "目标文件为:"+@filename puts "要查找的文本为:"+@target if @line_nums[0] puts "\n行号 文本" for i in 0...@line_nums.length puts @line_nums[i].to_s+" "*8+@lines[i] end else puts "\n指定文件中没有要找的文本信息" end

end

#查找,并记录行号和所在行文本 def find file=open(@filename,"r") line_num=0 file.each_line{|line| line_num += 1 if line =~ /#{@target}/ @line_nums << line_num @lines << line end
} end end

t=Text_finder.new t.result gets

原来不是问题 我是在 scite 里面调试的时候出现我描述的情况,直接双击运行就正常了

#3 楼 @jjym 确实如此,问题解决了,非常感谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号