【问题标题】:Ruby puts command creates a new line in bashRuby puts 命令在 bash 中创建一个新行
【发布时间】:2022-01-18 18:24:23
【问题描述】:

当我将最终的 puts 命令放入代码中时:

#!/usr/bin/env ruby
#Este comando cita sua idade e nome
puts "digite sua idade:"
idade = gets.to_i
puts "digite seu nome:"
nome = gets
puts "Olá #{nome}! você nasceu em #{2021-idade}"

并在 bash 上运行它,它会在行内创建一个新行。 如何使它成为一行?

bash image

【问题讨论】:

  • 这就是puts 所做的,添加一个换行符(在行尾)。你可以改用print
  • 再想一想,gets 也这样做了(在某种程度上)。您的 nome 包含换行符。 puts 不会在其参数中间添加换行符,仅在末尾添加。
  • 请编辑并内嵌您发布的图片中包含的文字。

标签: ruby


【解决方案1】:

我假设您的代码中有错字,应该是:

#!/usr/bin/env ruby
#Este comando cita sua idade e nome
puts "digite sua idade:"
idade = gets.to_i
puts "digite seu nome:"
nome = gets
puts "Olá #{nome}! você nasceu em #{2021-idade}"

换行符出现在名称之后,因为gets 包含换行符,然后您将其插入到您正在打印的字符串中。您可以使用#chomp#strip 删除换行符(以及输入周围可能存在的任何不需要的空格。您可以通过在 irb 中调用这些来查看。

irb(main):003:0> gets
hello
=> "hello\n"
irb(main):004:0> gets.chomp
hello
=> "hello"
irb(main):005:0> gets.strip
  hello
=> "hello"
irb(main):006:0>

【讨论】:

    【解决方案2】:

    print 方法将继续在同一行输出。

    puts 将始终添加新行。

    这里有一个很好的参考:https://flexiple.com/puts-vs-p-vs-print-ruby/

    您也可以随时查看文档:

    puts - https://www.rubydoc.info/stdlib/core/IO:puts "注意 puts 总是使用换行符"

    print-https://www.rubydoc.info/stdlib/core/IO:print

    如果您担心输入有新行,请查看gets.chomp

    https://www.rubyguides.com/2019/10/ruby-chomp-gets/

    puts "digite sua idade:"
    idade = gets.to_i
    puts "digite seu nome:"
    nome = gets.chomp #<- add .chomp here to remove \n from input
    puts "Olá #{nome}! você nasceu em #{2021-idade}"
    

    【讨论】:

    • puts 仅在没有换行时附加换行符。如果字符串已经以换行符结尾,它不会添加另一个。
    • @Stefan 这不是我的建议。我建议它总是在终端输出中包含一个新行。
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多