![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
たのしい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ランキング
-
あせんうぶり言語
-
(再質問)エクセルのマクロボ...
-
100万件越えCSVから条件を満た...
-
電子書籍epub変換について
-
pandasでsqlite3にテーブル作成...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
MacBookAir起動時にRubyソース...
-
C言語の入力した文字を反転させ...
-
Ruby on Railsでボタンをクリッ...
-
三項でたとえば交換って
-
英数字を含む文字列(0-9,A-Z)...
-
じゃんけんのプログラムを作っ...
-
前回の質問の続き
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
エクセル 連続保存マクロ
-
ウェブサイトを別の会社のホス...
-
VBAのvlookupでエラーになって...
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Rubyの超初心者です。「戻り値r...
-
【BrowseForFolderでデスクトッ...
-
python return 関数
-
【引数と戻り値の違い】 はじめ...
-
CloseとQuitについて
-
再帰に関する質問です。
-
ブロックつきメソッドやyield文...
-
railsチュートリアル5章の演習
-
ぱいソン
-
rubyでのproc
-
【Ruby】 文法的に何が悪いの...
-
Rubyにインクリメンタル演算子...
-
ハッシュ(単語数を数える) た...
-
Ruby 自作メソッドのブロック...
-
レコードセットオブジェクトの...
-
Ruby Fileクラスについて
-
timesの使いどころ
-
ジェネレーターとはなんですか?
-
Unixのwcコマンドの簡易版ですが
-
自作したメソッド・・・こんな...
おすすめ情報