ruby中的gets和gets.chomp是如何工作的?

Joh*_* Wu 42 ruby

我了解到,gets创建一个新行并要求用户输入内容,并gets.chomp执行相同的操作,但不会创建新行.gets必须返回一个对象,所以你可以调用一个方法,对吗?如果是这样,让我们​​将该对象命名gets为as tmp,那么你可以调用该chomp方法tmp.但在gets返回之前tmp,它应该在屏幕上打印一个新行.那怎么chomp办?是否创建删除了新行gets

重新解释我的问题的另一种方法是:我打电话时是否执行了以下操作gets.chomp

  1. gets 打印一个新行
  2. gets 回报 tmp
  3. tmp.chomp 删除新行
  4. 用户输入

这是正确的顺序吗?

Joe*_*oey 68

gets让用户输入一行并将其作为值返回给您的程序.该值包括尾随换行符.如果您随后调用chomp该值,则会断开此换行符.所以不,你所拥有的是不正确的,它应该是:

  1. gets 获取一行文本,包括最后的换行符.
    • 用户输入
  2. gets 将该行文本作为字符串值返回.
  3. 调用chomp该值可以删除换行符

您在屏幕上看到文本行的事实仅仅是因为您首先在那里输入了文本.gets不会神奇地抑制你输入的东西的输出.


app*_*lis 14

问题不应该是,如果这是正确的顺序,但如果这是接近这一点的正确方法则更多.这是你做的.

看看这个,或多或少是你想要"实现"的东西.首先,指定一个名为tmp返回值的变量gets.然后在该对象上调用chomp(如Ruby文档中所述)方法,您可以看到chomp删除了新行.实际上是什么chomp,删除字符串末尾的Enter字符.当您键入h e l l o,每次烧焦在一个时间,然后按Enter获得需要的所有信件Enter.请记住,这Enter只是另一个角色.

1. tmp = gets
hello
=>"hello\n"

2. tmp.chomp
"hello"
Run Code Online (Sandbox Code Playgroud)

Gets 您的用户输入.此外,这是很好的了解,gets或者puts,意味着get string*或put stringputs.这意味着这些方法只处理strings.