Ruby STDIN.getch和printf

问题描述

我正在尝试制作一个基本的拼写控制台应用程序,该应用程序使用MacOS文本进行语音语音说一个单词,而用户应该拼写这个单词。

我只想输出字母字符,所以我用STDIN.getch代替了gets,但是我发现当我快速拼写单词时,即使输出的单词是正确的,输出的字符也会变得混乱和重复我希望。

我做错了什么,它不仅仅输出正在说出并包含在最后一个单词中的字母?

我快速拼写马时输出:

hoorsrese
horse

代码:

class Speaker
  def say(text)
    `say #{text}`
  end
end

require 'io/console'
class SpellMaster
  def initialize(speaker = Speaker.new)
    @speaker = speaker
  end

  def spell(word = 'word')
    @speaker.say "Spell #{word}"
    spelling = get_spelling
    if spelling == word
      @speaker.say('correct')
    else
      @speaker.say('incorrect')
    end
    gets
  end

  def get_spelling
    char = ''
    word = ''
    while char != "\r"
      char = get_letter
      word += char
    end
    printf("\n" + word)
    word.chomp
  end

  def get_letter
    char = STDIN.getch
    return '' unless /[a-z]/.match?(char) || char == "\r"
    print char
    @speaker.say(char)
    char
  end
end

SpellMaster.new.spell

编辑:删除类变量

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...