
以下のURLの質問
https://oshiete.goo.ne.jp/qa/14060608.html
で、
「本の題名は、
「3ステップでしっかり学ぶRuby入門」
で、著者は、「竹馬力」です。
で、2018年1月26日に、紙版と電子版が出ています。
以下のURLの通りです。
https://gihyo.jp/book/2018/978-4-7741-9502-5
よろしくお願いします。教えて頂けると嬉しいです。
わざわざお骨折りありがとうございます。
問題のページは、「127ページ」の「loopメソッド」の、すぐ下です。
よろしくお願いします。教えて頂けると嬉しいです。」
の所の続きからです。
引き続きよろしくお願いします。
No.15ベストアンサー
- 回答日時:
どちらも正しいと思います。
少なくとも、前者(あなたの考えた解釈)は、正しいです。あなたは、カラスが空を飛ぶのをみて、「鳥は空を飛ぶ」といいました。
私は、ダチョウが走るのを見て、「鳥は空を飛べない。鳥は走る。」といいました。
この主張のどちらが正しいかを論じているような気がします。
私はどちらも正しいと思います。
どちらが正しいかにこだわる必要はないと思いますがいかがでしょうか。
あなたは、どちらかが正しくて、どちらかが誤っていると考えているから、
どちらが正しいかにこだわっているのではないでしょうか。
No.15です。
迅速な回答ありがとうございます。
そうですね。もしかすると、書籍の「他の繰り返しで使った変数は使えない」は、前者と後者2通りの意味があるのかもしれませんね。
No.14
- 回答日時:
>所で、私の考えた解釈(前者)とtatsumaru77様が、考えて頂いた解釈(後者)と、
>どっちが、正しいのでしょうね?やはり、最後の「使えない」という言葉から考えると、前者でしょうか?
回答:
~~ [ここから] ~~
loop do
i = 99
puts i # i の値99が表示される
break
end
loop do
puts i # i が未定義でエラー
break
end
~~ [ここまで] ~~
上記のスクリプトについては
「他の(繰返し等制御)ブロック内で宣言された変数は使えません」
が成立します。
これが、あなたが解釈なので、あなたが主張していることは正しいです。
No.14です。
迅速な回答ありがとうございます。
No.13で、後者(tatsumaru77様に考えて頂いた別の解釈)という考えもあるが、書籍には、「使える」とは、書いておらず、「使えない」と書いてあることから、やはり、その点を加味すると、前者(私の考えた解釈)の方が正しいとなるのでしょうか?
教えて頂けると嬉しい。よろしくお願いします。
No.13
- 回答日時:
>では、逆に同じ点というのは、どういう点でしょうか?
回答:
「他の繰り返しで使った変数は使えません」について解釈の事ですが、
①の行が追加されていた場合です。
~ここから~
i=10000・・・①
loop do
i = 99・・・②
puts i # i の値99が表示される・・・③
break
end
loop do
puts i # i が未定義でエラー
break
end
~ここまで~
この場合、
puts i # i が未定義でエラー
の個所の変数iが、②、③の個所で使われていますが、これは
「他の繰り返しで使った変数は使えません」のうちの、"他の繰り返しで使った変数"
は、同じ意味です。ここが、同じ点になります。違うのは、その変数(i)が使えるということです。
No.13です。
迅速な回答ありがとうございます。
所で、私の考えた解釈(前者)とtatsumaru77様が、考えて頂いた解釈(後者)と、どっちが、正しいのでしょうね?やはり、最後の「使えない」という言葉から考えると、前者でしょうか?
教えて頂けると嬉しいです。よろしくお願いします。
No.12
- 回答日時:
>一つ疑問がありますが、「puts i # i が未定義でエラー」の行で、エラーが発生しないのは、
>「i=10000」が、「i=99」に上書きされて、
>それが、そのまま使われているから。という事でしょうか?
回答:はい、その通りです。
そのことを
https://oshiete.goo.ne.jp/qa/14060608.html#googl …
のNo8の回答の
スクリプト名 ex4.rb で説明しています。
No.12です。
迅速な回答ありがとうございます!
では、逆に同じ点というのは、どういう点でしょうか?
教えていただけると幸いです。よろしくお願いします。
No.11
- 回答日時:
>疑問②の追加質問
>「他の(繰返し等制御)ブロック内で宣言された変数でも使える」の所について、もう少し分かりやすく教えて頂けると嬉しいです。
回答:
以下のスクリプトについては、
「他の(繰返し等制御)ブロック内で宣言された変数は使えません」
~ここから~
loop do
i = 99
puts i # i の値99が表示される
break
end
loop do
puts i # i が未定義でエラー
break
end
~ここまで~
これは、
puts i # i が未定義でエラー
でエラーが発生するから、iは使えないと言っているわけですね。
それに対して、
~ここから~
i=10000・・・①
loop do
i = 99
puts i # i の値99が表示される
break
end
loop do
puts i # i が未定義でエラー
break
end
~ここまで~
のように①を追加すると、
puts i # i が未定義でエラー
の行でエラーは発生せず、99が表示されます。つまり、iは使えるわけです。
そのことを
「他の(繰返し等制御)ブロック内で宣言された変数でも使える」
と書きました。
No.11です。
迅速な回答ありがとうございます。
一つ疑問がありますが、「puts i # i が未定義でエラー」の行で、エラーが発生しないのは、「i=10000」が、「i=99」に上書きされて、それが、そのまま使われているから。という事でしょうか?
教えて頂けると嬉しいです。よろしくお願いします。
No.10
- 回答日時:
>疑問①「この行」とは、どこでしょうか?
回答:
「①の「i=10000」は、なぜ出力されないのでしょうか?」
という質問に対しての回答なので、
i=10000・・・①
の行です。
>loop do
>puts i ♯iが未定義でエラー
>break
>end
>で、putsがあると思うのですが。では、No.8のrubyプログラムに何を付け加えれば、①の「10000」が表示されるのでしょうか?
回答:
loop do
i = 99・・・②
puts i # i の値99が表示される
break
end
でiに99を設定しているので、ここでiの値が99に変わります。
puts i ♯iが未定義でエラー
の行で10000を出力するように変えることは、できません。
もちろん、
puts i ♯iが未定義でエラー
の行の前に
i = 10000
を追加すれば可能ですが、そのようなことを期待されているのではないと思います。
本件については、
https://oshiete.goo.ne.jp/qa/14060608.html
のNo8で解説した内容になります。
「ローカル変数がブロックの前で、宣言された場合は、ブロックの中では、その値をそのまま引き継ぎます。
そして、ブロックを抜けた後でも(ブロックの後でも)、その変数は有効で、使用することができます。」
の個所です。
>疑問②「同じといえば、同じですが、違うといえば違うような気もします。」
>の所ですが、どこが違うのでしょうか?
回答:
「他の(繰返し等制御)ブロック内で宣言された変数は使えません」と同じかというと、
他の(繰返し等制御)ブロック内の前で、宣言されていれば、「他の(繰返し等制御)ブロック内で宣言された変数でも使える」という点が異なります。
No.10です。
迅速な回答ありがとうございます。
それで、疑問が1つあって、
疑問②の追加質問
「他の(繰返し等制御)ブロック内で宣言された変数でも使える」の所について、もう少し分かりやすく教えて頂けると嬉しいです。
よろしくお願いします。
No.9
- 回答日時:
>ここで、なぜ、①の「i=10000」は、なぜ出力されないのでしょうか?
この行では、画面出力するための命令がありません。(puts等)
そのため、なにも出力されません。
No.9です。
迅速な回答で懇切丁寧な解説ありがとうございます。
すみません。
疑問点が2つほどあって、
疑問①「この行」とは、どこでしょうか?
loop do
puts i ♯iが未定義でエラー
break
end
で、putsがあると思うのですが。では、No.8のrubyプログラムに何を付け加えれば、①の「10000」が表示されるのでしょうか?
疑問②「同じといえば、同じですが、違うといえば違うような気もします。」
の所ですが、どこが違うのでしょうか?
以上2点について、教えて頂けると幸いです。よろしくお願いします。
No.8
- 回答日時:
>逆に、別の解釈は、存在するのでしょうか?
>少なくとも、私には、思い付きませんでした。
>「他の繰り返しで使った変数は使えません」についての別の解釈の事です。
回答:
以下のような場合も、同じ解釈になるのでしょうか。
①の行が追加されていた場合です。
~ここから~
i=10000・・・①
loop do
i = 99
puts i # i の値99が表示される
break
end
loop do
puts i # i が未定義でエラー
break
end
~ここまで~
同じといえば、同じですが、違うといえば違うような気もします。
No.7
- 回答日時:
>もしかすると、「他の繰り返しで使った変数は使えません」というのは、この場合だと、1回目の繰り返し(つまり、loop do 〜 endの事)で、loop
do end内で変数iが何かを示していても、(この場合だと、i=99の事)2回目の繰り返し(同じく loop do 〜 endの事)で、loop do 〜 end内に同じiが出て来たとしても、1回目のloop do 〜 end内のi=99は、使えないという意味だったのかもしれませんが、tatsumaru77様は、これについて、そう思いませんか?
回答:はい、この場合は、そのような意味に解釈することは可能かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby ruby loopメソッド 変数 13 2025/03/16 15:55
- 車検・修理・メンテナンス H29 古河電池株 M-42/B20L アドリンクストップ 5 2024/12/08 07:13
- Firefox(ファイヤーフォックス) Firefox133.0でURLバーと検索バーが被ってしまうのとタブバーのタブが移動できない 1 2024/11/30 21:34
- Ruby Ruby 格納 9 2025/02/16 13:09
- 数学 おしえてgooに図形の問題を投稿したら、削除されました。なぜでしょう? 13 2024/04/27 14:42
- 写真 麺ヘラです。やっぱり写真写り悪いです。アドバイス下さい。 3 2023/11/23 15:35
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- 数学 写真の問題についてですが、 解答では、z=1とz≠1の時で場合分けしてて、(1)(2)はz≠1のとき 3 2023/11/11 13:35
- SEO googleサーチコンソールでの重複ページ(ダブルスラッシュ) 3 2023/06/12 15:00
- Excel(エクセル) エクセルで添付画像のように値を入力する方法はありますか? 3 2023/10/06 10:10
このQ&Aを見た人はこんなQ&Aも見ています
-
Ruby newメソッド
Ruby
-
ルビー言語 csvファイル part2
Ruby
-
Ruby require ライブラリー
Ruby
-
-
4
ruby loopメソッド 変数
Ruby
-
5
ルビー言語 ライブラリー
Ruby
-
6
ruby while式
Ruby
-
7
Ruby 格納
Ruby
-
8
Ruby 引数
Ruby
-
9
ruby raise句
Ruby
-
10
ruby クラス・オブジェクト・インスタンス
Ruby
-
11
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
12
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
-
13
ruby begin句
Ruby
-
14
Ruby 変数 用途と違い
Ruby
-
15
趣味がプログラミングだと言ってもいい?
その他(プログラミング・Web制作)
-
16
ルビー言語 ライブラリー(再々渇)
Ruby
-
17
ruby 配列
Ruby
-
18
excelVBAについて。
Excel(エクセル)
-
19
excelVBAについて。
Excel(エクセル)
-
20
excelVBAについて。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
-
ruby raise句
-
ruby loopメソッド 変数(再喝)
-
ruby loopメソッド 変数
-
ruby ensure句
-
ルビー言語 csvファイル part2
-
ルビー言語 ライブラリー
-
電子書籍epub変換について
-
Accessで文字列のバイト数読み込み
-
Excel関数と条件付き書式:製造...
-
ruby クラス・オブジェクト・イ...
-
ruby begin句
-
ルビー言語 ライブラリー
-
ビーリアルのユーザー名を変え...
-
Ruby on railsをrails sで立ち...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby 配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ルビー言語 csvファイル part2
-
ruby loopメソッド 変数
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
-
ruby クラス・オブジェクト・イ...
-
ビーリアルのユーザー名を変え...
-
ルビー言語 ライブラリー
-
ruby raise句
-
ruby begin句
-
ruby while式
-
ruby 配列
-
ルビー言語 ライブラリー 追記
-
ルビー言語 csvファイル 続き(...
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
pandasでsqlite3にテーブル作成...
-
ruby ensure句
おすすめ情報
No.1です。
迅速な回答ありがとうございます。
わざわざお骨折り大変恐縮で、感謝します。
それで、追加質問は、お礼のコメントで、させて頂きます。よろしくお願いします。
追加コメントです。
画像を添付します。
意味不明な点があれば、不明な点を教えて頂けると幸いです。(たぶんこの画像だけでは、分からないとは、思いますが。)
No.2です。
迅速な回答ありがとうございます。
No.3です。
迅速な回答ありがとうございます。
No.4です。
迅速な回答ありがとうございます。
また、rubyプログラムの実行をやってみます。
今は、少し手が離せないので、今日〜明日中には、やっておきます。
すみません。
No.5です。
迅速な回答ありがとうございます。
もしかすると、「他の繰り返しで使った変数は使えません」というのは、この場合だと、1回目の繰り返し(つまり、loop do 〜 endの事)で、loop
do end内で変数iが何かを示していても、(この場合だと、i=99の事)2回目の繰り返し(同じく loop do 〜 endの事)で、loop do 〜 end内に同じiが出て来たとしても、1回目のloop do 〜 end内のi=99は、使えないという意味だったのかもしれませんが、tatsumaru77様は、これについて、そう思いませんか?
教えて頂けると嬉しいです。よろしくお願いします。
逆に、別の解釈は、存在するのでしょうか?
少なくとも、私には、思い付きませんでした。
tatsumaru77様は、どう思いますか?
No.7の補足コメントの追記です。
「他の繰り返しで使った変数は使えません」についての別の解釈の事です。
大変失礼しました。改めてよろしくお願いします。
すみません。以下のrubyのプログラムで、
~ここから~
i=10000・・・①
loop do
i = 99
puts i # i の値99が表示される
break
end
loop do
puts i # i が未定義でエラー
break
end
~ここまで~
ここで、なぜ、①の「i=10000」は、なぜ出力されないのでしょうか?
教えて頂けると幸いです。よろしくお願いします。