大数跨境

Ruby 中的智能打印 - 了解何时以及如何使用每种方法

Ruby 中的智能打印 - 了解何时以及如何使用每种方法 索引目录
2025-05-20
0
导读:关注【索引目录】服务号,更多精彩内容等你来探索!如果你曾经盯着一堆控制台输出,疑惑自己刚刚打印了什么,那么你并不孤单。

关注【索引目录】服务号,更多精彩内容等你来探索!

如果你曾经盯着一堆控制台输出,疑惑自己刚刚打印了什么,那么你并不孤单。Ruby 提供了多种打印方式,但知道何时使用哪一种才是真正的诀窍。在本文中,我们将介绍 Ruby 中五种最常见的打印方式,以及一个让你的控制台看起来像是焕发光彩的 gem。

puts:带有自动换行符的标准输出

puts是将简单输出转储到控制台的首选。它代表“put string”,并在每个参数末尾添加一个换行符。它听起来很友好,也很低调:

puts "Hello, World!"
puts 123
puts ["Ruby", "Rails"]

输出:

Hello, World!
123
Ruby
Rails

数组是逐行打印的,因此当每个项目出现在其自己的行上时不要感到惊讶。

print:不带换行符的连续输出

想要在同一行打印多个内容?使用print。它类似于puts,但没有自动换行符:

print "Hello, "
print "World!"

输出:

Hello, World!

如果您想要换行符,则必须手动添加:

print "Hello, World!\n"

p:使用检查输出进行调试

p是 的调试兄弟puts。它显示inspect对象的版本,意味着字符串保留其引号,并且您可以获得更多详细信息:

p "Hello, World!"
p [1, 2, 3]
p({name: "Rob", age: 39})

输出:

"Hello, World!"
[1, 2, 3]
{:name=>"Rob", :age=>39}

如果您正在调试并希望对正在处理的内容有清晰的了解,p那么它就是您的朋友。

pp:精美印刷,增强可读性

对于更复杂的东西,比如嵌套哈希,pp(漂亮的打印)使事情变得可读:

require 'pp'

complex_hash = {name: "Rob", hobbies: ["coding", "fitness", {sports: ["cycling", "lifting"]}]}
pp complex_hash

输出:

{:name=>"Rob",
:hobbies=>["coding", "fitness", {:sports=>["cycling", "lifting"]}]}

可以把它想象成p,但具有空间意识。

y:IRB 中的 YAML 输出

y方法仅在 IRB(交互式 Ruby)中可用,但它是一种无需太多努力就能输出 YAML 格式数据的好方法:

# In IRB
data = {name: "Rob", languages: ["Ruby", "JavaScript"]}
y data

输出:

---
:name: Rob
:languages:
- Ruby
- JavaScript

当你处理嵌套内容时,它整洁、结构化且更具可读性。

快速摘要


方法 何时使用
puts 通用输出,自动换行
print 连续输出,无换行
p 使用检查细节进行调试
pp 美观的打印以提高可读性
y YAML 格式的输出(仅限 IRB)


如果你只是想要一些快速易读putsp能让你受益匪浅的东西。但是,如果你正在使用 API 中的嵌套哈希值,并且不想因为阅读原始转储而眼花缭乱,那么请继续阅读。

awesome_print:增强的精美打印风格

如果pp能完成工作,那就用 flairawesome_print来完成吧。它能以全彩漂亮地打印 Ruby 对象,并进行漂亮的缩进,让你的控制台输出感觉就像 VS Code 决定加入进来一样。

安装

使用Bundler:

group :development do
gem 'awesome_print'
end

然后运行:

bundle install

或者直接安装:

gem install awesome_print

用法

require 'awesome_print'

data = {
name: "Rob",
hobbies: ["coding", "fitness", { sports: ["cycling", "lifting"] }]
}

ap data

输出:

{
:name => "Rob",
:hobbies => [
[0] "coding",
[1] "fitness",
[2] {
:sports => [
[0] "cycling",
[1] "lifting"
]
}
]
}

要使其成为 IRB 中的默认设置:

require 'awesome_print'
AwesomePrint.irb!

一旦您使用了awesome_print,返回到puts感觉就像阅读没有换行符的最小化 JSON。


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读12
粉丝0
内容444