Ruby 2.5.0 was recently released. Ruby has sequence predicates such as all?, none?, one? and any? which take a block and evaluate that by passing every element of the sequence to it. 1if queries.any? { |sql| /LEFT OUTER JOIN/i =~ sql } 2logger.log "Left outer join detected" 3endCopy Ruby 2.5 allows using a shorthand for this by passing a pattern argument. Internally case equality operator(===) is
Ruby 2.2 で追加されたメソッドまとめをみてた。 New Methods in Ruby 2.2 Enumerable#slice_whenのユースケースでEnumerable内での各要素出現数をカウントするのがステキだったので、2.2以前も含めてどう書けるパターンあるんだっけ?をメモ。 カウント対象のArrayを生成 labels = ["aaa", "bbb", "ccc"] ary = Array.new(20) { labels.sample } puts ary.join ", " # bbb, aaa, bbb, bbb, bbb, aaa, ccc, aaa, aaa, bbb, ccc, ccc, bbb, bbb, aaa, aaa, ccc, bbb, aaa, aaa
Advanced Enumeration with RubyWritten by: Daniel P. Clark Enumeration by definition is “the action of mentioning a number of things one by one.” In programming, instead of mentioning, we choose any action we may want to perform, whether it simply be printing out the item to a display or performing some sort of selection and/or transformation on the item. In programming, we can perform many ways to
Posted on May 28, 2017 by Tina Wuest There is a terrible cycle which exists in the lifecycle of functional programmers. Monads are confusing at first so the programmer will read many articles explaining how monads are actually easy—which will fail to achieve any pedagogical goals due to the fact that the article is filled with self-referential language, leaving the programmer even more confused. E
In Ruby, we commonly use uniq method on an array to fetch the collection of all unique elements. But there may be cases where we might need elements in a hash by virtue of uniqueness of its values. Let's consider an example of countries that have hosted the Olympics. We only want to know when was the first time a country hosted it. 1 2# given object 3{ 1896 => 'Athens', 4 1900 => 'Paris', 5 1904 =
In https://bugs.ruby-lang.org/issues/12217#note-3, Akira Tanaka, mentions that the default argument to sum is 0. This creates problems with non-numeric summations (e.g. strings). I would like to suggest using the first enumerable value. This would make the method more flexible. It also makes it behave more like reduce. I think using the initial value in the enumerable is less surprising than using
It is a common use case to calculate sum of the elements of an array or values from a hash. 1 2[1, 2, 3, 4] => 10 3 4{a: 1, b: 6, c: -3} => 4 5 Copy 1 2> [1, 2, 3, 4].sum 3 #=> 10 4 5> {a: 1, b: 6, c: -3}.sum{ |k, v| v**2 } 6 #=> 46 7 8> ['foo', 'bar'].sum # concatenation of strings 9 #=> "foobar" 10 11> [[1], ['abc'], [6, 'qwe']].sum # concatenation of arrays 12 #=> [1, "abc", 6, "qwe"] 13 Copy U
This article is about incorporating functional programming concepts into Ruby code, in a pragmatic way – something I call “functional style.” And when I say pragmatic, what I mean is that the code should still mostly look and feel like idiomatic Ruby. Ruby is not Haskell, and nor should it be. The idea is to work with the grain of the language, not against it. The code should be easy for any Rubyi
The Enumerable module is one of my favorite parts of Ruby. It allows us to perform operations like #each, #map, #inject, and #any? on collection objects, most notably Array. It’s all much cleaner, readable, and semantic than the nested for loops I used to write in other languages. Enumerable is made possible by leveraging one of Ruby’s more powerful constructs: blocks. They typically take the form
A closer look at Enumerable's grep_v and chunk_while You may have heard Ruby 2.3 dropped on Christmas this past year. Two new Enumerable instance methods were added, grep_v and chunk_while, both of which are variations on other Enumerable methods. We'll dissect both here below. Triple Lindey Grep allows you to select members of a collection that match an expression. That expression is some_object
この記事は Ruby Advent Calendar 2015 の 8日目です。 比較的あまり知られていないと思うオススメの Ruby の機能を 7つ紹介します。 Enumerator.new Enumerator.new は知ってはいても、あまり使わない人が多いように思います。 私は非常によく使います。 理由は スコープを新たに導入したい Producer-Consumer パターン。値の生成と消費でフェーズの違いを明確化したい。 そのメソッド内で1度使いたいだけなのに yield するメソッドを別に作るのはちょっと気が引ける。名前空間を汚したくない。 全部、一度配列にしちゃうとメモリが気になる。メモリ消費を節約したい。 ネストを浅くしたい Enumerable モジュールの機能が欲しい といったところです。 たとえば下記のようなかんじで使います。 # Producer フェーズ use
min_by -> Enumerator[permalink][rdoc][edit] min_by(n) -> Enumerator min_by {|item| ... } -> object | nil min_by(n) {|item| ... } -> Array 各要素を順番にブロックに渡して評価し、その評価結果を <=> で比較して、最小であった値に対応する元の要素、もしくは最小の n 要素が昇順で入った配列を返します。 引数を指定しない形式では要素が存在しなければ nil を返します。引数を指定する形式では、空の配列を返します。 該当する要素が複数存在する場合、どの要素を返すかは不定です。 ブロックを省略した場合は Enumerator を返します。 Enumerable#min と Enumerable#min_by の違いは Enumerable#sort と Enum
sometime I want to do grep -v like operation: %w(aaa bbb ccc).reject { |x| /b/ === x } #=> ["aaa", "ccc"] We already have Enumerable#grep, so I propose to add Enumerable#grep_v. %w(aaa bbb ccc).grep(/b/) #=> ["bbb"] %w(aaa bbb ccc).grep_v(/b/) #=> ["aaa", "ccc"] Naming / Interface¶ This idea is mentioned at DevelopersMeeting20150408Japan by me. Matz has said "I don't disagree for the feature. So t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く