Ruby:String不再混合在1.9中的Enumerable中

Zom*_*ies 4 ruby code-formatting

那么我怎样才能编写漂亮的代码,例如:

'im a string meing!'.pop
Run Code Online (Sandbox Code Playgroud)

注意:str.chop答案不够

Jör*_*tag 10

它不是一个可枚举的字符串,而不是枚举的字符串.字符串是一系列...

  • 线,
  • 字符,
  • 代码点或
  • 字节?

答案是:根据具体情况,所有这些,其中任何一个,或者两者中的任何一个或两者都不是.因此,你必须告诉Ruby你真正想要的那些.

String该类中有几种方法可以为上述任何方法返回枚举数.如果你想要1.9之前的行为,你的代码示例就是

'im a string meing!'.bytes.to_a.pop
Run Code Online (Sandbox Code Playgroud)

这看起来很丑陋,但有一个原因:字符串是一个序列.您将它视为堆栈.堆栈不是序列,事实上它几乎序列相反.