Ruby 如何使用;获取;及;获取.chomp";红宝石色

Ruby 如何使用;获取;及;获取.chomp";红宝石色,ruby,Ruby,我了解到,gets创建了一个新行,并要求用户输入一些东西,而gets.chomp除了不创建新行之外,做了同样的事情gets必须返回一个对象,这样您就可以对其调用方法,对吗?如果是这样,让我们将get返回的对象命名为tmp,然后您可以调用tmp的chomp方法。但是在获取返回tmp之前,它应该在屏幕上打印一行新行。那么,chomp做什么呢?在创建新行后,它是否会删除它? 重新阐述我的问题的另一种方式是:当我调用get.chomp时是否执行了以下操作 获取打印新行 获取返回tmp tmp.chomp

我了解到,
gets
创建了一个新行,并要求用户输入一些东西,而
gets.chomp
除了不创建新行之外,做了同样的事情
gets
必须返回一个对象,这样您就可以对其调用方法,对吗?如果是这样,让我们将
get
返回的对象命名为
tmp
,然后您可以调用
tmp
chomp
方法。但是在
获取
返回
tmp
之前,它应该在屏幕上打印一行新行。那么,
chomp
做什么呢?在
创建新行后,它是否会删除它?

重新阐述我的问题的另一种方式是:当我调用
get.chomp
时是否执行了以下操作

  • 获取
    打印新行
  • 获取
    返回
    tmp
  • tmp.chomp
    删除新行
  • 用户输入

  • 这是正确的顺序吗?

    获取
    允许用户输入一行并将其作为值返回给程序。此值包括尾随换行符。如果随后对该值调用
    chomp
    ,则断线被切断。因此,不,你所拥有的是不正确的,应该是:

  • 获取
    获取一行文本,包括末尾的换行符。
    • 这是用户输入
  • 获取
    将该行文本作为字符串值返回
  • 对该值调用
    chomp
    ,将删除换行符
  • 事实上,您在屏幕上看到这行文本只是因为您首先在那里输入了它<代码>获取不会神奇地抑制您输入内容的输出。

    问题不应该是“这是正确的顺序吗?”而是“这是正确的方法吗?”

    考虑一下这一点,这或多或少是您想要实现的:

  • gets
    的返回值指定给名为
    tmp
    的变量,该值是一个字符串
  • 然后对该对象调用String的方法,可以看到
    chomp
    删除了尾随的新行

    实际上,
    chomp
    所做的是删除字符串末尾的输入字符(
    \n
    )。每次键入一个字符,然后按Enter键获取所有字母和Enter键的新行字符(“
    \n
    ”)


  • 获取
    是用户的输入。另外,最好知道*
    get
    表示“get string”,而
    put
    表示“put string”。这意味着这些方法仅处理字符串。

    chomp是从字符串中删除尾随新行字符即“\n”的方法。 无论何时使用“gets”从用户获取i/p,它都会在字符串末尾追加新行字符,即“\n”。因此,要从字符串中删除“\n”,请使用“chomp

    str=“你好,ruby\n”

    str=str.chomp

    放置str

    o/p

    “Hello ruby”

    例如:

    x = gets
    y = gets
    puts x+y
    


    现在分别运行这两个示例并查看差异。

    chomp
    返回一个新字符串,其中给定的记录分隔符从
    str
    的末尾移除(如果存在)

    有关更多信息,请参阅。

    • “gets”允许用户输入,但将在字符串后添加新行(字符串表示文本或字符序列)

      “gets.chomp”允许用户输入,就像“gets”一样,但是有 不会是在字符串后添加的新行

    证明它们之间存在差异的证据:

    puts "Enter first text:"
    text1 = gets.chomp
    puts "Enter second text:"
    text2 = gets.chomp
    puts text1 + text2
    
    获取:


    复制粘贴我给您的代码,运行,您将看到并知道它们都是不同的。

    get
    不会创建新行。用户输入它<代码>获取只传递它。您试图指出的内容,用户已经知道了。问题是关于问题的澄清。对于任何想知道这有什么作用的人,请在IRB或Pry中运行示例,这将更加明显。要澄清:
    chomp
    删除单个尾随的新行字符。如果存在多个尾随新行,则必须循环直到它们全部消失,或者必须以另一种方式剥离它们。新行字符不是由
    gets
    添加的,它是键盘驱动程序在按下该键后返回的输入字符
    gets
    仅返回所给的内容,并在看到“
    \n
    ”时将控制权返回给代码。
    x = gets.chomp
    y = gets.chomp
    puts x+y
    
    puts "Enter first text:"
    text1 = gets.chomp
    puts "Enter second text:"
    text2 = gets.chomp
    puts text1 + text2
    
    puts "Enter first text:"
    text1 = gets
    puts "Enter second text:"
    text2 = gets
    puts text1 + text2