为什么在ruby 1.9中可以使用===调用proc?
发布时间:2020-12-16 22:48:30 所属栏目:百科 来源:网络整理
导读:This article提到了4种在ruby 1.9中调用proc的方法,而===就是其中之一.我不明白为什么会这样做.它是否与===的正常含义有任何关系(询问这两个对象是否是同一个对象)? irb(main):010:0 f =- n {[:hello,n]}= #irb(main):011:0 f.call(:hello)= [:hello,:hello
This article提到了4种在ruby 1.9中调用proc的方法,而===就是其中之一.我不明白为什么会这样做.它是否与===的正常含义有任何关系(询问这两个对象是否是同一个对象)?
irb(main):010:0> f =-> n {[:hello,n]} => # irb(main):011:0> f.call(:hello) => [:hello,:hello] irb(main):012:0> f === :hello => [:hello,:hello] irb(main):013:0> Object.new === Object.new => false irb(main):014:0> f === f => [:hello,#] 解决方法
This is what the docs have to say:
这是一个可能是人为的例子: even = proc { |x| x % 2 == 0 } n = 3 case n when even puts "even!" else puts "odd!" end 它的工作原理是因为case / when基本上是这样执行的: if even === n puts "even!" else puts "odd!" end case / when通过在when子句的参数上调用===来检查哪些分支执行,选择返回truthy值的第一个. 尽管它与等式运算符(==)相似,但它并不是更强或更弱的形式.我试着将===运算符视为“属于”运算符.类定义它以便您可以检查对象是否属于该类(即,是类的实例还是类的子类),Range将其定义为检查参数是否属于该范围(即包含在范围),等等.这并没有真正使Proc案例更有意义,而是将其视为使自己属于运算符的工具,就像我上面的例子;我定义了一个对象,可以确定某些东西是否属于偶数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – Active Record是否有默认的英文翻译文件?
- oracle数据库导出和oracle导入数据的二种方法(oracle导入导
- ReactRouter-V4 构建之道与源码分析
- objective-c – 在UITableView中加载本地json信息
- ruby-on-rails – make:execvp:g:权限被拒绝
- flex4 xmlns:local Style:@namespace CDATA、ArrayCollecti
- Cocos3.3横版游戏-Part2-加入主角及控制主角移动
- NoSQL中的分布式、容错事务
- c – 从单链表中删除条目
- 【COCOS2DX-游戏开发之八】点击空白隐藏键盘