ruby - 崇高的文字无法理解gets.chomp

我使用sublime text用ruby编写了这个简单的程序,出于某种原因,如果我使用sublime text inbuilt system构建它,那么会得到以下错误

`deposit': undefined method `chomp' for nil:NilClass (NoMethodError)

如果我用命令来运行它,它运行得很好。
class BankAccount
    def initialize(name)
        @transactions = []
        @balance = 0
    end
    def deposit
        print "How much do you want to deposit?"
        amount = gets.chomp
        @balance += amount.to_f
        puts "$#{amount} is deposited"
    end
    def show_balance
        puts "Your balance is #{@balance}"
    end
end
bank_account = BankAccount.new("Rohit Begani")
bank_account.class # => BankAccount
bank_account.deposit
bank_account.show_balance

最佳答案

Sublime无法单独处理交互输入。您可以通过SublimeREPL运行脚本,也可以创建自定义的build system来打开命令提示符,然后运行代码。幸运的是,这并不太难。在Sublime中创建包含以下内容的新文件:

{
    "cmd": ["start", "cmd", "/k", "c:/ruby193/bin/ruby.exe", "$file"],
    "selector": "source.ruby",
    "shell": true,
    "working_dir": "$file_dir"
}

另存为Packages/User/Ruby_cmd.sublime-build,其中Packages是选择Preferences -> Browse Packages...时打开的目录选择Tools -> Build System -> Ruby_cmd,并使用CtrlB运行文件。
这应该适用于从xp开始的所有版本的windows。不过,它并不适用于OSX或Linux,因为它们没有startcmd程序…

本文翻译自 https://stackoverflow.com/questions/19332183/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 ruby sublimetext gets chomp


相关文章:

ruby-on-rails - Nokogiri在服务器和本地主机上的解析不同

ruby-on-rails - 在Rails上使用ruby的在线音频流

html5 - 一个文件中的多个片段升华文本2

linux - 如何在linux上管道输入到sublimetext?

c - 通常gets()将输入作为\ n,它位于其上方printf()的末尾

ruby-on-rails - Ruby on Rails:如何从文本输入中删除/删除/清理脚本,样式标签?

ruby - 定义最小和最大长度

formatting - Sublime Text 3中的80个字符/右边距线

c - 为什么我可以在gcc -std = c11中使用gets()?

c - c-获取输入后的奇怪行为