Issue #6670 has been updated by mame (Yusuke Endoh).

Assignee changed from matz (Yukihiro Matsumoto) to yhara (Yutaka HARA)

Yutaka Hara,

I'm happy to inform you that matz has accepted your proposal,
as making #chars, #lines, etc. return an Array (and keep
#each_char, etc as is).

  "foo".chars     #=> ["f", "o", "o"]
  "foo".each_char #=> #<Enumerator: "foo":each_char>

Yhara-san, could you create a patch?

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6670: str.chars.last should be possible
https://bugs.ruby-lang.org/issues/6670#change-28395

Author: yhara (Yutaka HARA)
Status: Assigned
Priority: Normal
Assignee: yhara (Yutaka HARA)
Category: core
Target version: 2.0.0


=begin
Since str.chars returns an Enumerator, we need explicit to_a for some operations:

  str.chars.to_a.last
  str.chars.to_a[1,3]

But often I forget that and write:

  str.chars.last
  str.chars[1,3]

Besides that, I feel it is hard to explain why to_a is needed here when I'm writing
artilcles for Ruby beginners. 

Simplest way to achieve this is to make String#chars (also #lines, #bytes and #codepoints)
return an Array. Since arrays have most of the methods defined in Enumerator, this will 
not be a big change. For programs like str.chars.next, you can use each_char instead.
=end



-- 
http://bugs.ruby-lang.org/