【问题标题】:Trouble outputting and inputting information to command line using Ruby sciTE使用 Ruby sciTE 向命令行输出和输入信息时遇到问题
【发布时间】:2012-03-12 10:33:40
【问题描述】:

我正在用 Ruby 编写程序,但在使用 sciTE 文本编辑器从命令提示符获取信息时遇到问题。例如,当我尝试运行需要用户输入的代码时(例如,输入“请输入您的姓名:” name = gets()),命令行会弹出,但我“输入”到屏幕上的信息不会不显示。当我尝试输入信息(字母或数字)时,什么也没有发生。然后我关闭命令提示符并在 sciTE 输出窗口中收到错误代码。 有什么想法吗? 谢谢!

【问题讨论】:

    标签: ruby input command prompt scite


    【解决方案1】:
    I do hope I understand what you want to do, but this is a sample here from my irb prompt:
    
    1.9.2-p290 :001 > def a
    1.9.2-p290 :002?>   puts "what is your name"
    1.9.2-p290 :003?>   name = gets.chomp
    1.9.2-p290 :004?>   puts "My name is #{name}"
    1.9.2-p290 :005?>   end
     => nil 
    1.9.2-p290 :006 > a
    what is your name
    abbb
    My name is abbb
     => nil 
    1.9.2-p290 :007 > 
    

    【讨论】:

      【解决方案2】:

      我今天通过 Neighborly 先生的 Ruby 教程遇到了这个问题,并得出了答案。这是 SciTE 的一个已知问题,以及它与 Windows 上的标准输入 (gets()) 交互的方式。

      要按原样运行教程代码,请使用命令提示符来运行您的程序,而不是在 Mr. Neighborly 的 Humble Little Ruby Book 中提到的 SciTE 'Go' 键 [F5],如下所示:

      解决方法 1:

      1. 您的 Windows Ruby 安装应该包含一个快捷方式(在 开始菜单)称为“使用 Ruby 启动命令提示符”。运行它。
      2. 在 Ruby 命令提示符下,导航到您的 Hello World Ruby 文件所在位置。
      3. 键入ruby hello.rb 并按[Enter]。 (将hello.rb 替换为您的文件名。)

      解决方法 2:

      另一种选择是忽略损坏的命令提示符,而使用 SciTE 的内部命令提示符。但是,这需要您在每个 puts() 语句之后添加 $stdout.flush(),如下所示:

      puts "Hello, world. What is your name?"  
      $stdout.flush()  # Add this line!  
      myname = gets()  
      puts "Well, hello there " + myname + "."  
      $stdout.flush()  # Add this line!  
      

      注意

      本教程第 0 章中的下一个不一致之处(您可能会立即注意到)是换行符 (\n) 包含在您的 myname 变量中(来自 gets() 的输入)。您可能会看到以下输出(注意第二行的“.”):

      Well, hello there Yournamehere  
      .  
      

      要解决此问题,请将 myname.gets() 更改为 myname.gets().chomp()。 (请随时在在线 Ruby 文档中查找 chomp()。)

      【讨论】:

        猜你喜欢
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        相关资源
        最近更新 更多