【发布时间】:2021-11-08 10:19:46
【问题描述】:
我是 Ruby 的新手,到目前为止发现! 的解释有点过于技术化。
假设我们有以下内容:
print "What is your first name?"
first_name = gets.chomp.upcase!
puts "Hi, #{first_name}. How are you?"
! 为方法添加了什么?这是否意味着每次我在任何后续字符串中使用#{first_name} 时,名称中的所有字母都会以大写形式打印?如果我离开!,代码会受到怎样的影响?
如果可以的话,请用通俗易懂的方式解释它,因为我仍在学习 Ruby 的一些技术术语。
提前致谢。
【问题讨论】:
-
嗨史蒂夫。到目前为止,您对 bang 方法有什么了解?我认为知道这将有助于我们以不同的方式回答,也许会找到适合您的解释。
-
upcase返回一个 new 大写字符串,而upcase!就地更改其接收器。如果字符串已经是大写,!方法也会返回nil。在这种情况下,您最终会得到first_name是nil。因此,您应该坚持使用非爆炸变体。 -
爆炸方法?这是我第一次听到与 Ruby 相关的“砰”字。我正在学习 codeacademy.com 上的 Intro to Ruby 课程,十天前我什至对 Ruby 一无所知。像“...upcase!就地更改其接收器”这样的短语对我来说是一种拉丁语(“就地接收器?”)。这就是为什么我现在正在寻找一个简化的解释,直到我更熟悉 Ruby 的行话。谢谢。
-
@Steve:见this style guide。
-
@Steve Calling Methods 和 Methods 的文档值得一读。它们解释了 Ruby 的方法相关概念和约定,包括“接收器”和“爆炸方法”等术语。
标签: ruby string methods string-interpolation