我碰到這塊Ruby代碼來的?以前從未見過。紅寶石雙問號
Q
紅寶石雙問號
14
A
回答
21
Ruby 1.8有一個?-prefix語法,可以將一個字符轉換爲其ASCII碼值。例如,?a
是字母a
(或97)的ASCII值。您看到的雙重問號實際上只是數字63
(或?
的ASCII值)。
?a # => 97
?b # => 98
?c # => 99
?\n # => 10
?? # => 63
要轉換回來,你可以使用chr
方法:
97.chr # => "a"
10.chr # => "\n"
63.chr # => "?"
??.chr # => "?"
在紅寶石1.9,則?a
語法返回字符本身(如確實對字符串方括號語法):
?? # => "?"
"What?"[-1] # => "?"
2
正如Ryan所說,?
前綴爲您提供了字符的ASCII值。在這種情況下這很有用的原因是,當你在Ruby 1.8的字符串中使用索引表示法時,返回的是ASCII值而不是字符。例如
irb(main):009:0> str = 'hello'
=> "hello"
irb(main):010:0> str[-1]
=> 111
所以下面不考,如果一個字符串的最後一個字符是字母 'O'
irb(main):011:0> str[-1] == 'o'
=> false
但這:
irb(main):012:0> str[-1] == ?o
=> true
和(前提是你懂得這是什麼?)這比
irb(main):013:0> str[-1] == 111
=> true
相關問題
- 1. 紅寶石單雙引號
- 2. 紅寶石雙引號返回
- 3. 紅寶石雙斜線GSUB問題
- 4. 差「@」和紅寶石雙「@」
- 5. 雙點擊紅寶石
- 6. 雙小於紅寶石
- 7. 訪問紅寶石
- 8. 紅寶石訪問符號「由援引」
- 9. 紅寶石問題(bug) - 在耙寶石
- 10. 紅寶石寶石問題與升級
- 11. 紅寶石mysql2寶石安裝問題
- 12. Apache與紅寶石 - 寶石問題
- 13. 如何符號紅寶石
- 14. 紅寶石符號約定
- 15. 紅寶石 - 逃避括號
- 16. 紅寶石 - 瞭解符號
- 17. 紅寶石智能雙引號轉換爲單引號
- 18. 紅寶石散列在紅寶石
- 19. 紅寶石寶石電子表格返回日期爲雙打
- 20. 紅寶石寶石文檔
- 21. 寶石安裝紅寶石
- 22. 調試寶石紅寶石
- 23. 紅寶石程序寶石
- 24. 錯誤紅寶石寶石
- 25. Twitter的紅寶石寶石
- 26. 卸載紅寶石寶石
- 27. 紅寶石寶石 - LoadError
- 28. 紅寶石寶石LoadError
- 29. 安裝紅寶石寶石
- 30. 紅寶石中的「冒號」符號
準確地說,在1.9中不推薦使用'?'語法,因爲目前它的用途很小? – 2010-02-06 16:13:40
Myrddin,這可能是一個公平的事情說。 1.9中使用'?'語法的用處不大。 – 2010-02-09 14:05:28