4 回答

TA貢獻1856條經(jīng)驗 獲得超5個贊
恒等于(===):檢查兩個操作數(shù)是否一樣,也就是檢查沒有進行數(shù)據(jù)類型轉(zhuǎn)換的操作數(shù)的值是否相等。
==,是在一定類型轉(zhuǎn)化后判斷操作數(shù)的值是否相等。

TA貢獻1851條經(jīng)驗 獲得超5個贊
Ruby 是一個強大的面向?qū)ο竽_本語言(本文所用 Ruby 版本為1.8.6),在 Ruby 中 Symbol 表示“名字”,比如字符串的名字,標識符的名字。
創(chuàng)建一個 Symbol 對象的方法是在名字或者字符串前面加上冒號:
創(chuàng)建 symbol 對象
:foo
:test
:”abc”
:”I am a boy”
你可能會問,字符串就是字符串,干嗎還有字符串的名字?這是因為在 Ruby 中字符串也是一種對象,即 String對象。無論其結(jié)構(gòu)還是操作和 Symbol 對象都是不同的。
在 Ruby 中每一個對象都有唯一的對象標識符(Object Identifier),可以通過 object_id 方法來得到一個對象的標識符。我們來看看 Symbol 對象和 String 對象的差別:
Ruby 對象標識符
irb(main):001:0> puts :foo.object_id
327458
=> nil
irb(main):002:0> puts :foo.object_id
327458
=> nil
irb(main):003:0> puts :"foo".object_id
327458
=> nil
irb(main):004:0> puts "foo".object_id
24303850
=> nil
irb(main):005:0> puts "foo".object_id
24300010
=> nil
irb(main):006:0> puts "foo".object_id
24296170
=> nil

TA貢獻1804條經(jīng)驗 獲得超2個贊
1、 模塊不能實例化,類不能include
2、如果模塊和類不在用一個文件中,如果要使用include,先使用require把文件引入
3、include不是簡單的將模塊的實例變量和方法拷貝到類中,而是建立一個由類到所包含模塊的引用
4、如果有多個include,將依次生成代理類,最后一個include的將是該類的直接超類,依次向上衍生
5、含有include的模塊或者類定義,可以訪問它所包含的常量,類變量和實例方法。如果一個模塊被包含,改模塊的常量,類變量,實例方法都被綁定到該類的一個匿名超類中,類的對象會響應(yīng)發(fā)送給模塊實例方法的消息
6、模塊里可以定義一個initialize方法,當創(chuàng)建包括模塊的類的對象時,滿足一下條件之一,則模塊的該方法將被調(diào)用.

TA貢獻1805條經(jīng)驗 獲得超10個贊
區(qū)別是 MRuby 不支持超過 512 個局部變量.
CRuby 的字節(jié)碼在內(nèi)存使用上是比較奢侈的, 而 MRuby 為了削減內(nèi)存使用, 字節(jié)碼設(shè)計得和 Lua 的很相似, 而其壓縮表示限制了局部變量的個數(shù)
Lua 的字節(jié)碼編碼方式 (32bit, A, B, C 一般為局部變量編號), 可以看到操作數(shù)最少都有 8 位, 可以表示高達 256 個局部變量!
- 4 回答
- 0 關(guān)注
- 692 瀏覽
添加回答
舉報