ruby - sublime text 看不懂gets.chomp

标签 ruby sublimetext gets chomp

我使用 Sublime Text 在 ruby​​ 中编写了这个简单的程序,出于某种原因,如果我使用 Sublime text 内置系统构建它,则会出现以下错误

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

如果我使用 cmd 运行它,它运行完美。

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 程序...

关于ruby - sublime text 看不懂gets.chomp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19332183/

相关文章:

c - 我应该使用什么而不是获取?

ruby - 在 ruby 中穿插功能?

sublimetext3 - Sublime Text 3 - 仅滚动到最后一行

ruby - 为什么 bundler 看不到自定义的 gem 源?

sublimetext3 - Sublime Text 3 不断为分号提供下拉菜单

sublimetext - 如何在 Sublime Text 中选择所选区域的所有实例

C 数组循环错误

c - 为什么gets函数如此危险以至于不应该使用它?

mysql - 如何在 Rails 3.1.0 应用程序中访问多个数据库?

ruby-on-rails - Ruby on Rails - 使用 logger.info "hi"给出 undefined variable 或方法错误,要更改/设置什么?