
たのしいRuby P252に掲載されていた、例題
「ハッシュ(単語数を数える)」の解説を読んでも
意味が分からなかったので教えてください。
■例題word_count.rb
1:# 単語数のカウント
2:
3: count = Hash.new(0)
4:
5:## 単語の集計
6:while line = gets
7: words = line.split
8: words.each{|word|
9: count[word] += 1
10: }
11:end
12:
13:## 結果の出力
14:count.sort{|a,b|
15: a[1] <=> b[1]
16:}.each{|key, value|
17: print "#{key}: #{value}\n"
18}
■疑問1.
解説には、
# 3行目で出現回数を記録するハッシュcountを作ります。
# countは、キーが単語、値がその単語が出現した回数を表します。
と書かれているのですが、「キーが単語、値がその単語が出現した回数を表します」
の内容が理解できません。newしただけなのに、どうして、
キーと値の内容が決まるのでしょうか?
■疑問2.
解説には、
# 8行目からの繰り返しでは、それぞれの単語をキーにして、countから出現回数を取り出し、
# +1します。
と書かれているのですが、「count[word] += 1」
の内容が理解できません。
作成したハッシュcountと、getsメソッドで読み込み単語単位に分割した配列wordsとが、
どこで関連付けされているのかが、分かりません。
■疑問3.
解説には、
# ruby word_count.rb README
という形で、Rubyに同梱されているREADMEファイルの単語数を調べた
実行結果が掲載されているのですが、
そのときの具体的な処理の流れが分かりません。
「ruby word_count.rb README」と書くだけで、
処理の流れが、getsの所まできたとき、
自動的に指定ファイル名を判断し、
読み込みを始めるということなのでしょうか。
No.1ベストアンサー
- 回答日時:
>と書かれているのですが、「キーが単語、値がその単語が出現した回数を表します」
>の内容が理解できません。newしただけなのに、どうして、
>キーと値の内容が決まるのでしょうか?
別に決まってはいません。
その後のコードで count の key と value をそのように解釈して利用しているということです。
>作成したハッシュcountと、getsメソッドで読み込み単語単位に分割した配列wordsとが、
>どこで関連付けされているのかが、分かりません。
配列 words を一単語ずつ each メソッドで処理することで関連づけています。
Hash.new(0) でデフォルト値が 0 であることに注意しましょう。
>「ruby word_count.rb README」と書くだけで、
> 処理の流れが、getsの所まできたとき、
> 自動的に指定ファイル名を判断し、
> 読み込みを始めるということなのでしょうか。
gets とは ARGF.gets と同じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
- C言語・C++・C# [至急]Project Euler:#17Number letter countsコード入力出力解説 2 2022/09/24 02:46
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- 教えて!goo 【回答が書きにくいのはなぜ】投稿内容に不適切な表現など・(中略)・投稿内容の修正をお願いいたします 9 2023/05/09 08:41
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- 英語 1単語及び2単語の「no~」を受ける単語について 1 2022/11/07 11:54
- 日本語 なぜこの単語にこれとこの意味があるの?というもの 7 2023/08/25 12:44
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ruby 配列
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby loopメソッド 変数(再喝)
-
ruby loopメソッド 変数
-
ビーリアルのユーザー名を変え...
-
英数字を含む文字列(0-9,A-Z)...
-
C言語の入力した文字を反転させ...
-
(再質問)エクセルのマクロボ...
-
ruby while式
-
ruby クラス・オブジェクト・イ...
-
1、Rstudioで回帰直線を求める...
-
rubyでじゃんけんのプログラム...
-
実行時エラー450:引数の数が一...
-
【VBA】複数シートのデータを1...
-
c言語でランタイムエラーの処理...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby 同じ名前のメソッド
-
【Ruby】 文法的に何が悪いの...
-
【BrowseForFolderでデスクトッ...
-
Rubyの超初心者です。「戻り値r...
-
Ruby バブルソート
-
railsチュートリアル5章の演習
-
再帰に関する質問です。
-
rails の form_forについて
-
rubyでのproc
-
ぱいソン
-
ダック・タイピングのメリット
-
Unixのwcコマンドの簡易版ですが
-
ブロックつきメソッドやyield文...
-
PHP DB トランザクション
-
timesの使いどころ
-
【引数と戻り値の違い】 はじめ...
-
ruby 毎回同じ様なreplace文を...
-
バッファの上限なしでreadparti...
-
Rubyのクラス
-
ハッシュ(単語数を数える) た...
おすすめ情報