タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

Enumeratorに関するmas-higaのブックマーク (2)

  • Rubyでカウンタを作る最新の方法があると聞いて...

    呼び出す度に数値が1づつ増えたり減ったりするカウンタを、Rubyで書くとしたらどうやりますか? こんな感じですか。 class Counter def initialize(init=1) @current = init end def inc @current += 1 end def dec @current -= 1 end end c = Counter.new c.inc # => 2 c.inc # => 3 c.inc # => 4 c.inc # => 5 c.dec # => 4 c.dec # => 3 c.dec # => 2 c.dec # => 1 def counter(op=:+, init=1) Enumerator.new do |y| cur = init loop { y << cur; cur = cur.send(op, 1) } end end

  • with_indexが便利だという話とstable_sort_by - Qiita

    Rubyはいろんなことがone lineで書けて便利ですよね。 いろんなことを1行に書けるようにするには String, Array, Hash, Enumerable あたりの、リスト系の構造になったものにどういうメソッドがあるかを覚えておけば、たいていのことは1行で書けます。 今回の話は、これに加えて、 Enumerator のメソッドも知っておくともっと世界が広がるよという話です。 map_with_indexが欲しい! 例えば、あるユーザーのリストに対して、名前の前に通し番号をふった文字列を出力したい(あんまり無さそうな例でごめんなさい)という要求があったとしましょう。 それをただ出力すれば良いのであれば、each_with_indexを使って users.each_with_index do |user, i| puts "#{i+1}: #{user.name}" end とす

    with_indexが便利だという話とstable_sort_by - Qiita
    mas-higa
    mas-higa 2013/12/13
    自分には Enumerator の動きが理解できてない。この例だと posts.sort_by{|x| [x.like_count, x.created_at]} でよさげ。
  • 1