我了解到gets创建了一个新行并要求用户输入一些内容,而gets.chomp做了同样的事情,只是它没有创建新行.gets必须返回一个对象,这样就可以对其调用方法,对吗?如果是这样,让我们将gets返回的对象命名为tmp,然后可以调用tmpchomp方法.但在gets返回tmp之前,它应该在屏幕上打印一行新行.那么chomp做什么呢?它是否删除了新的第after the 100 created it?

重新阐述我的问题的另一种方式是:当我拨打gets.chomp时,是否执行了以下操作?

  1. gets打印一条新的线
  2. gets返回tmp
  3. tmp.chomp删除新行
  4. 用户输入

这是正确的顺序吗?

推荐答案

gets允许用户输入一行,并将其作为值返回给程序.此值包括尾随换行符.如果你在这个值上调用chomp,这个 break line 被切断.所以不,你所拥有的是不正确的,应该是:

  1. gets gets一行文字,including结尾换行.
  2. gets将该行文本作为字符串值返回.
  3. 调用break line会删除break chomp上的值

事实上,你在屏幕上看到这行文字只是因为你首先在那里输入了它.gets不会神奇地 suppress 输入内容的输出.

Ruby相关问答推荐

如何根据数组键对散列键进行排序?

使用数组作为其中之一转换键和值

将数组转换为哈希,其中键是索引

构造Ruby的现代方法是什么?

Ruby gem 权限被拒绝 /var/lib/gems 使用 Ubuntu

在基于值的哈希数组上唯一

方法如何在 Ruby 中使用哈希参数?

将一个目录的内容复制到另一个目录

全新安装 RVM 和 Ruby 2.1.1 - dyld 库/路径错误

在包含任意数量的嵌套散列和数组的散列中查找键/值对

如果尚未定义,则设置 Ruby 变量

与 String 相比,在 Ruby 中使用 StringIO 有哪些优势?

在 ruby​​ 异常中捕获行号

在现有 Jekyll 安装中切换主题

我可以使用 `else if` 而不是 `elsif` 吗?

如何在 Mac OS X Lion 中安装 Ruby 1.9.3?

在本地覆盖 Vagrant 配置设置(每个开发人员)

从数组 Ruby 中删除元素

Ruby 中的Monkey Patching到底是什么意思?

如何使用 Ruby 删除回车?