質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

428閲覧

whileの条件式はどこに? 変数が自動的にhashに?

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/10/25 19:09

編集2017/10/26 09:22

わからなさすぎてまた質問させていただきます・・・・
こちらは文字列をハッシュに変換するメソッドです。

このメソッドのwhileの条件式は key = array.shift になるのでしょうか?
whileはtrueの間繰り返すものだったと思いますが、
key = array.shiftは条件式だと思えないです。

あと key value 変数が自動的にハッシュになっているのでしょうか
hash[key] = value のところの意味もよくわかりません。
もしかしたらこの質問を見る方は何を言っているのかわからないかもしれません。

もしこの構文の説明ができる方がいましたら。お助け願えないでしょうか?

def str2hash(str) hash = Hash.new() array = str.split(/\s+/) while key = array.shift value = array.shift hash[key] = value end return hash end p str2hash("naze ka wa karanai")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ソースコードは```で囲んでください!
そうすればインデントが見やすくなります。

whileのところは、array.shiftしたものがkeyに入るのは分かりますよね?
それが入ればtrueということです。入らなければfalseで抜けるので
条件としては「取れる間ループする」ということですね。

key・value・hashのところは、例えば
key = "data"value = "hogehoge"の時に
hash[key] = value をすると {"data": "hogehoge"} になります。

このプログラムは文字列をスペースやタグ区切りで分割して
それを前からkey・valueの順番に入れ、hashにしているということですね。

実際動作して確認したらそうなりませんか?

投稿2017/10/25 23:37

yuki-saito

総合スコア928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/26 09:24

回答ありがとうございます。whileの条件式の部分の意味がわかりすっきりしました。 ありがとうございました。
yuki-saito

2017/10/26 10:32

お役に立ててよかったです????
guest

0

key = array.shiftは条件式だと思えないです。

「条件式」という式の種類は存在しなくて、ifwhileの後に書いた「式」が「条件式」と呼ばれるだけです。つまりそれは条件式です。
key = array.shiftは、代入式ですが、代入式の値は=の右辺の値です。

key value 変数が自動的にハッシュになっているのでしょうか

keyvalueも文字列オブジェクトですね。

hash[key] = value のところの意味もよくわかりません。

ハッシュとそもそも何であるかを理解していますでしょうか?
hashというハッシュオブジェクトに、キーがkeyで、値がvalueである要素を追加(あるいは上書き)しています。

投稿2017/10/25 22:01

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/26 09:26

回答ありがとうございます。条件式の考え方がわかりました。 hash[key] = value の部分は自分の勉強不足のようです。 勉強が足りないということがわかったので出直してきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問