请问在Ruby中"=="和"==="的区别?

Ruby中"=="和"==="的区别


慕虎7371278
浏览 658回答 4
4回答

RISEBY

恒等于(===):检查两个操作数是否一样,也就是检查没有进行数据类型转换的操作数的值是否相等。==,是在一定类型转化后判断操作数的值是否相等。

江户川乱折腾

Ruby 是一个强大的面向对象脚本语言(本文所用 Ruby 版本为1.8.6),在 Ruby 中 Symbol 表示“名字”,比如字符串的名字,标识符的名字。创建一个 Symbol 对象的方法是在名字或者字符串前面加上冒号:创建 symbol 对象:foo:test:”abc”:”I am a boy”你可能会问,字符串就是字符串,干吗还有字符串的名字?这是因为在 Ruby 中字符串也是一种对象,即 String对象。无论其结构还是操作和 Symbol 对象都是不同的。在 Ruby 中每一个对象都有唯一的对象标识符(Object Identifier),可以通过 object_id 方法来得到一个对象的标识符。我们来看看 Symbol 对象和 String 对象的差别:Ruby 对象标识符irb(main):001:0> puts :foo.object_id327458=> nilirb(main):002:0> puts :foo.object_id327458=> nilirb(main):003:0> puts :"foo".object_id327458=> nilirb(main):004:0> puts "foo".object_id24303850=> nilirb(main):005:0> puts "foo".object_id24300010=> nilirb(main):006:0> puts "foo".object_id24296170=> nil

慕婉清6462132

  1、 模块不能实例化,类不能include  2、如果模块和类不在用一个文件中,如果要使用include,先使用require把文件引入  3、include不是简单的将模块的实例变量和方法拷贝到类中,而是建立一个由类到所包含模块的引用  4、如果有多个include,将依次生成代理类,最后一个include的将是该类的直接超类,依次向上衍生  5、含有include的模块或者类定义,可以访问它所包含的常量,类变量和实例方法。如果一个模块被包含,改模块的常量,类变量,实例方法都被绑定到该类的一个匿名超类中,类的对象会响应发送给模块实例方法的消息  6、模块里可以定义一个initialize方法,当创建包括模块的类的对象时,满足一下条件之一,则模块的该方法将被调用.

holdtom

区别是 MRuby 不支持超过 512 个局部变量.CRuby 的字节码在内存使用上是比较奢侈的, 而 MRuby 为了削减内存使用, 字节码设计得和 Lua 的很相似, 而其压缩表示限制了局部变量的个数Lua 的字节码编码方式 (32bit, A, B, C 一般为局部变量编号), 可以看到操作数最少都有 8 位, 可以表示高达 256 个局部变量!
打开App,查看更多内容
随时随地看视频慕课网APP