`?n`与''n'不同?

时间:2013-12-28 22:06:37

标签: ruby string ruby-1.8

Chris Pine的如何编程提到以下内容:

?T

应该返回84。当我运行它时,它返回"T"。我怀疑存在版本差异。我的猜测是?ArrayString方法,但我找不到文档。 ?T做了什么?

1 个答案:

答案 0 :(得分:8)

在此上下文中,带有字符的?是一个文字单字符串。因此?T是字符串“T”,puts ?Tputs "T"相同您可以将其投入IRB以检查它:

1.9.3p429 :002 > ?T
 => "T" 
1.9.3p429 :001 > ?T.class
 => String 
1.9.3p429 :003 > puts ?T
T
 => nil

相关的现有SO问题和答案:

编辑添加:根据上面链接的答案的注释,这可能是ruby 1.9中的更改,以返回单个字符String而不是ASCII字符值。 (T的ASCII值为84)

1.9.3p429 :006 > ?T.ord
 => 84