Ruby初学者我有点困惑

时间:2016-07-06 13:46:38

标签: ruby

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

my_name = gets.chomp
my_name.capitalize 

my_name = gets.chomp
my_name.capitalize!

3 个答案:

答案 0 :(得分:3)

区别在于

my_name.capitalize

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

my_name.capitalize!

仍会返回my_name的大写版本,但my_name也会更改,所以

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'

答案 1 :(得分:1)

来自Ruby capitalize文档:

capitalize
  

返回str的副本,第一个字符转换为大写   其余为小写。

capitalize!
  

通过将第一个字符转换为大写来修改str   其余为小写。如果没有做出任何更改,则返回nil。

答案 2 :(得分:0)

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

红宝石的问题在于,即使它是一种非常友好的语言,它也会假设很多东西而不必告诉新手。一旦你有几个月的语言,他们会有很多意义,但之前没有,所以我理解你的问题。

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

为什么人们会烦恼?嗯,这是一个惯例。根据经验,一个方法应该有一个爆炸标志的公认解释是该方法做了一个侵入性,破坏性或变异的东西,也就是说,它破坏了数据,在数据库,永久更改数据等。

没有必要为这些类型的方法命名,但它是一个在Ruby社区中被很好地保留的惯例。

编程Ruby说:

  

危险的方法,"或修改接收器,可能会命名   尾随"!"。

希望这能回答你的问题。