クリスタル1.4列挙可能なChrountは、現在の数をカウントするオプションのハッシュを受け入れます
列挙体は、トラバース、検索、フィルタリング、オブジェクトの問い合わせを意味します.
クリスタルでは、我々にはクラスがあります
この
語のリストの例を考えてください、そして、あなたは各々のチャーの総数を数えたいです.
このタイプの問題は、我々の
次のような言葉があると思います.
各単語の文字の量を計算する:
合計を計算するには、クリスタル1.4
この場合、我々はアイテムの数のランニング集計を格納し、それを
最後に、1行にコードを簡略化できます.
クリスタルでは、我々にはクラスがあります
Array
, Hash
, Range
, などを使用して、その列挙機能を取得しますEnumerable モジュールです.この
Enumerable
モジュールは様々なメソッドを提供します.#select
, #map
, #reduce
, and #uniq
我々は頻繁に使用し、知られていない#tally
このポストはどこですか.#tally
コレクション内の要素の出現回数をカウントし、すべての要素のカウントを含むハッシュを返します.['a', 'b', 'c', 'b'].tally # => {'a'=>1, 'b'=>2, 'c'=>1}
例
語のリストの例を考えてください、そして、あなたは各々のチャーの総数を数えたいです.
このタイプの問題は、我々の
#tally
チャーの総量を計算する方法次のような言葉があると思います.
word_one = "crystal"
word_two = "ruby"
以前
各単語の文字の量を計算する:
tally_one = word_one.chars.tally
# => {'c' => 1, 'r' => 1, 'y' => 1, 's' => 1, 't' => 1, 'a' => 1, 'l' => 1}
tally_two = word_two.chars.tally
# => {'r' => 1, 'u' => 1, 'b' => 1, 'y' => 1}
total_tally = tally_one.merge(tally_two) { |k, v1, v2| v1 + v2 }
# => {'c' => 1, 'r' => 2, 'y' => 2, 's' => 1, 't' => 1, 'a' => 1, 'l' => 1, 'u' => 1, 'b' => 1}
合併したtally_one
and tally_two
とハッシュ値を加算して、charsの結合カウントを取得します.アフター
合計を計算するには、クリスタル1.4
Enumerable#tally
now accepts 出現を数えるオプションのハッシュ.この場合、我々はアイテムの数のランニング集計を格納し、それを
#tally
メソッド.word_one = "crystal"
word_two = "ruby"
total_tally = {} of Char => Int32
word_one.chars.tally(total_tally)
word_two.chars.tally(total_tally)
total_tally
=> {'c' => 1, 'r' => 2, 'y' => 2, 's' => 1, 't' => 1, 'a' => 1, 'l' => 1, 'u' => 1, 'b' => 1}
上記の例では、クリスタル1.4で見ることができますtotal_tally
への引数としてのハッシュ#tally
charsのカウントを格納するメソッド.最後に、1行にコードを簡略化できます.
words = ["crystal", "ruby"]
total_tally = words.reduce({} of Char => Int32) { |acc, word| word.chars.tally(acc) }
Reference
この問題について(クリスタル1.4列挙可能なChrountは、現在の数をカウントするオプションのハッシュを受け入れます), 我々は、より多くの情報をここで見つけました https://dev.to/mamantoha/crystal-14-enumerabletally-now-accepts-an-optional-hash-to-count-occurrences-39p2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol