2017-08-11 103 views
2

我想暂停运行循环,当我点击空间并在此过程中再次恢复。我该怎么做?触发循环暂停并继续按空格键

require 'rubygems' 
require 'rest-client' 

URL="some url here" 
data1 = 0 
data2 = 0 
sign = ["up","down","equal"] 
i=3 

while true 
    response = RestClient.get(URL) 
    arr = (response.body).split(/"/) 
    data2=arr[9].to_i 
    if data2>data1 
     i = 0 
    elsif data2<data1 
     i = 1 
    else data2 == data1 
     i = 2 
    end 
    puts "#{arr[9]} #{sign[i]}" 
    data1=arr[9].to_i      #marker<<<---Here 
end 

简单的说,我希望循环来标记,而不是直到空间再次运行被按下。

编辑
我试图把一个puts有,但显然暂停那里,等待我每次给的输入。请尽量减少事情的复杂性。我是一个初学者。

+0

@sawa当我按下空间 – Rishav

+0

'loop do ... end'优于'while true ... end'时,我该如何暂停此循环。 – tadman

+0

是的,但我如何完成我的愿望? – Rishav

回答

1

使用线程?这不是一个直接的答案,但会给你一个如何使用它们的图片。

$key_hit = false 
t1 = Thread.new{ 

loop{ 
     puts "Hello" 
     break if $key_hit 
    } 
} 

t2 = Thread.new { 
    x = gets 
    $key_hit = true 
} 
t1.join 
t2.join 

puts "Done, exiting" 
+0

请尽量避免使用全局变量。关于这一点的缩排也到处都是。 – tadman

+0

这不是工作兄弟。你甚至尝试运行你自己的代码?它只是继续打印'你好',并没有停下来。 – Rishav

+0

您是否尝试点击输入来触发获取?我从来没有说过这是确切的代码。阅读代码@Rishav – av501