Ruby初学者我有点困惑

Ruby beginner i'm a little confused

本问题已经有最佳答案,请猛点这里访问。

我想知道这两个例子之间的区别是什么:

1
2
my_name = gets.chomp
my_name.capitalize

1
2
my_name = gets.chomp
my_name.capitalize!


区别在于

1
my_name.capitalize

返回my_name的大写版本,但不影响对象my_name指向,而

1
my_name.capitalize!

仍然返回my_name的大写版本,但my_name也被更改,因此

1
2
3
my_name ="john"
puts my_name.capitalize # print 'John' but the value of my_name is 'john'
puts my_name.capitalize! # print 'John' and now the value of my_name is 'John'


来自Ruby capitalize文档:

1
capitalize

Returns a copy of str with the first character converted to uppercase
and the remainder to lowercase.

1
capitalize!

Modifies str by converting the first character to uppercase and the
remainder to lowercase. Returns nil if no changes are made.


我总是很高兴看到有人进入红宝石!

Ruby的特点是,尽管它是一种非常友好的语言,但它假设了很多事情,而不必告诉新手。一旦你掌握了这门语言几个月,它们就很有意义了,但不是以前,所以我理解你的问题。

首先,砰!只是名字本身的一部分。Ruby允许将感叹号和问号作为方法名的一部分,就像任何其他字符一样。酷,对吧?

但是,人们为什么要麻烦呢?嗯,这是个惯例。作为经验法则,对于一个方法为什么应该有一个"爆炸"符号的一个公认的解释是,该方法做了一个侵入性的、破坏性的或变异的事情,也就是说,它破坏数据、在数据库上运行事务、永久性地更改数据等。

这样命名这些方法并不是必须的,但在Ruby社区中它是一种很好地保留下来的约定。

编程Ruby说:

Methods that are"dangerous," or modify the receiver, might be named
with a trailing"!".

希望这能回答你的问题。