在Ruby中,如果global_variables.class
返回Array
,那麼如何判斷global_variables
是數組還是方法?在Ruby中,如果「global_variables.class」返回「Array」,那麼如何判斷global_variables是數組還是方法?
4
A
回答
7
挖此:
>> global_variables
=> ["$-l", "$LOADED_FEATURES", "$?", ... , "$SAFE", "$!"]
>> method(:global_variables)
=> #<Method: Object(Kernel)#global_variables>
對於比較:
>> method(:foo)
NameError: undefined method `foo' for class `Object'
from (irb):6:in `method'
from (irb):6
>>
0
一般全局方法由內核定義,這是對象的祖先。所有在類之外編寫的方法都被視爲Object的私有方法。
irb(main):031:0> Object.private_methods.select{|x| x.to_s.start_with? 'gl'}
=> [:global_variables]
irb(main):032:0> f = [1,2,3]
=> [1, 2, 3]
irb(main):033:0> f.class
=> Array
irb(main):037:0> Object.private_methods.select{|x| x.to_s.start_with? 'f'}
=> [:format, :fail, :fork]
0
當Ruby看到一個裸詞時,它總是首先檢查是否存在具有該名稱的局部變量。如果沒有,它會嘗試調用一個方法:
>> def foo
.. "bar"
.. end
=> nil
>> foo = "lala"
=> "lala"
>> foo
=> "lala"
>> # to explicitly call the method
.. foo()
=> "bar"
如果它無法解析名稱,可以是局部變量或方法,您會收到以下錯誤:
>> bar
NameError: undefined local variable or method `bar' for #<Object:0x000001008b8e58>
from (irb):1
由於你以前沒有分配到'global_variables',它必須是一個方法。
相關問題
- 1. 如何在PHP中判斷它是數組還是散列?
- 2. 判斷祖先是Ruby中的類還是模塊的方法?
- 3. 如何判斷用戶是新訪客還是返回? analytics.js
- 4. 如何判斷庫是COM還是DCOM?
- 5. 如何判斷它是對象還是數組?
- 6. 如何判斷此方法是否會返回True或False?
- 7. 如何判斷成功$ .ajax()的返回數據是html還是json?
- 8. 如果在Scala中需要一個不可變數組,那麼返回IndexesSeq而不是Array是否正確?
- 9. 在ruby中,如何判斷字符串輸入是大寫還是小寫?
- 10. Ruby什麼是* args?數組還是?在方法
- 11. 如何判斷int數是奇數還是偶數? (二進制)
- 12. 如何判斷LinqToSql DataContext以前是否返回結果
- 13. 如何判斷從didFinishPickingMediaWithInfo返回的圖像是來自相機還是相冊?
- 14. 如何判斷返回是JSONObject還是使用JSON簡單(Java)的JSONArray?
- 15. 如何判斷數組中的項目是否也是數組?
- 16. 如何知道Hibernate .list()方法中的返回值是數組還是標量?
- 17. 如何判斷字符串在元值中是空還是空?
- 18. 如何判斷給定的值在Java中是float還是double?
- 19. MooTools:如何判斷對象是數組?
- 20. 如何判斷SIGILL是源自非法指令還是kill -ILL?
- 21. Android:如果圖像不存在,那麼返回createFromPath方法是什麼?
- 22. 在PHP中,如何判斷pg_query()是否是返回數據的查詢?
- 23. bash - 如何判斷變量是字符串還是數字
- 24. 如何判斷在瀏覽器中還是在NodeJS中運行?
- 25. Eclipse JDT ASTVisitor - 如何判斷一個字段是讀取還是寫入方法?
- 26. 如何判斷一個項目是SoapUI中的SOAP還是REST
- 27. 如何判斷YouTube視頻是私密還是不存在?
- 28. 如何判斷函數是否將值返回給變量?
- 29. 如何判斷是否刪除函數返回的指針
- 30. 如何判斷一個javascript變量的數據類型是Array?
工程...雖然我更多地尋找一種方式來說'classof? global_variables => method' – 2010-06-24 19:10:02
你也可以做一些像'defined?(global_variables)'這將返回字符串''方法'''。 – Eimantas 2010-06-25 04:41:41