我碰到这块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