您的位置 首页

ruby 中叹号问号的作用

ruby中的方法可以以问号和叹号结尾,问号通常用于谓语方法,这种方法返回一个布尔值。例如array和hash类…

ruby中的方法可以以问号和叹号结尾,问号通常用于谓语方法,这种方法返回一个布尔值。例如array和hash类都定义了一个empty?方法,这个方法用于测试数据结构中有没有元素。
 
  
 
 如果方法以叹号结尾,这意味着我们在使用这个方法的时候要小心,比如大多数核心的ruby类库方法都提供两个同名的方法,一个以叹号结尾,一个没有,
 
  
 
 区别在于,如果使用没有叹号结尾的方法,你在调用它的时候会得到当前对象的一个拷贝而不会修改原始对象,而如果使用带有叹号的方法,你在调用它的时候会直接修改当前对象的值。
 
 比如array类对象中定义的sort和sort!方法。

 i =0
 breeds = [“quarter”, “arabian”, “appalosa”, “paint” ]
 puts breeds.size #=> 4
 temp =[]
 
 while i <breeds.size do
  temp <<breeds[i].capitalize
  i += 1
 end
 
 p t=temp.sort #=> [“Appalosa”, “Arabian”, “Paint”,”Quarter”]把临时的temp.sort值赋给t了breeds.replace( temp)<——————–temp值其实不变
 p breeds # =>[“quarter”, “arabian”, “appalosa”, “paint” ]<—————不变

 
 结果:
 
 C:\Users\zjyivad\Desktop\Ruby>111.rb
 4
 [“Appalosa”,”Arabian”, “Paint”, “Quarter”]
 [“Quarter”,”Arabian”, “Appalosa”, “Paint”]
 
  
 
  
 
 i =0
 breeds = [“quarter”, “arabian”, “appalosa”, “paint” ]
 puts breeds.size #=> 4
 temp =[]
 
 while i <breeds.size do
  temp <<breeds[i].capitalize
  i += 1
 end
 
 p t=temp.sort #=> [“Appalosa”, “Arabian”, “Paint”, “Quarter”]
 
 breeds.replace(temp )
 p breeds=>[“quarter”, “arabian”, “appalosa”, “paint” ]
 
 
 temp.sort! 
 breeds.replace(temp )
 p breeds # =>[“Appalosa”, “Arabian”, “Paint”, “Quarter”]
 
 4
 [“Appalosa”,”Arabian”, “Paint”, “Quarter”]
 [“Quarter”,”Arabian”, “Appalosa”, “Paint”]
 [“Appalosa”,”Arabian”, “Paint”, “Quarter”]

此文章通过 python 爬虫创建,原文是自己的csdn 地址: ruby 中叹号问号的作用

本文来自网络,不代表找知博客立场,转载请注明出处:http://zhaozhiyong.cn/132.html

作者: 于老大

关注微博
返回顶部
//