文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【转】关于Ruby的 Range 类如何处理布尔值

【转】关于Ruby的 Range 类如何处理布尔值

时间:2010-09-28  来源:cnmahj

补充总结一下范围(区间、Range):
一、范围的形式
 1、闭区间, 两点形式,如 1..5
 2、半开区间,三点形式,如1...5,区间中不包含5
二、区间的作用
 1、作为连续的值使用(序列);
 2、作为间隔来使用,一般用在判断某值是否落在区间
 3、作为条件来使用
 前两种使用方法很简单,也很常用。不作罗嗦,主要看看区间作为布尔值的用法。
区间在布尔表达式中是一个状态机(flip-flop)形式,只有 set/unset 两个状态,一开始range处于unset状态。后面的状态转变与返回值如图(可惜论坛上传不了图。那我就传个伪代码上来吧,看起来麻烦点,不过很准确)
 #对于闭range的判断流程, 假设是e1..e2   
if range=unset   
  return false unless e1   
  range=set   
  range=unset if e2=true   
  return true  
else  
  range=unset if e2=true  
  return true  
end  
  
#对于半开半闭range的判断流程, 假设是e1...e2   
if range=unset   
  return false unless e1   
  range=set   
  return true  
else  
  range=unset if e2=true  
  return true  
end 
请运行下面代码,对照着上面的模拟流程,自己核对一下。
a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil)
a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil)

 

三、自己定义区间类
 1、只要你的类拥有 <=> 和 succ 方法,并且,<=>接受一个参数,返回-1,0,1,succ返回当前类的一个对象作为后继。那么此类对象及可用于Range

相关阅读 更多 +
排行榜 更多 +
浴血混战官方下载

浴血混战官方下载

飞行射击 下载
检票员模拟器免广告下载

检票员模拟器免广告下载

模拟经营 下载
最终前哨最终版手机版下载

最终前哨最终版手机版下载

休闲益智 下载