重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

rubyで、begin句は、省略出来るとは、どういう事でしょうか?教えていただけると幸いです。サンプルプログラムを教えていただけると幸いです。

質問者からの補足コメント

  • うーん・・・

    すみません。疑問が3つほどあって、
    疑問① a=#{a}の所は、♯は、インスタンスメソッドで、a.newと書き換えられて、変数aに数値が代入されるのでしょうか?
    疑問② 再度a=#{a}の所の{a}の{}の意味は、ハッシュという意味で、{a}の意味は、「aの単体版ハッシュ」という意味でしょうか?
    疑問③ "begin: a=#{a} b=#{b} c=#{c}\n"の所で、このbeginは、当然begin句とは、別物ですよね?
    以上3点について教えて頂けると幸いです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2025/03/20 08:25
  • すみません。疑問が2つほどあって、
    質問③の追加質問
    "begin: a=#{a} b=#{b} c=#{c}\n"の所は、"a=#{a} b=#{b} c=#{c}\n"と書き換えても良いという事ですね?
    質問④「ダブルクオートの中に変数の内容を埋め込みたい」とNo.2の回答で書いてありますが、このケースでは、どうなるのでしょうか?
    以上2点について教えて頂けると嬉しいです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2025/03/20 16:51

A 回答 (3件)

>質問③の追加質問


>"begin: a=#{a} b=#{b} c=#{c}\n"の所は、"a=#{a} b=#{b} c=#{c}\n"と書き換えても良いという事ですね?

回答:はいそうです。

>質問④「ダブルクオートの中に変数の内容を埋め込みたい」とNo.2の回答で書いてありますが、このケースでは、どうなるのでしょうか?

回答:
回答:
そのようにしたいから、
print "begin: a=#{a} b=#{b} c=#{c}\n"
のようにしています。
aが5、bが20、cが4の時
print "begin: a=#{a} b=#{b} c=#{c}\n"
を実行すると
begin: a=5 b=20 c=4 と表示されます。

print "begin: a=a b=b c=c\n" とかいて、実行すると
begin: a=a b=b c=c と表示されてしまいます。
    • good
    • 0

>疑問① a=#{a}の所は、♯は、インスタンスメソッドで、a.newと書き換えられて、変数aに数値が代入されるのでしょうか?



>疑問② 再度a=#{a}の所の{a}の{}の意味は、ハッシュという意味で、{a}の意味は、「aの単体版ハッシュ」という意味でしょうか?

回答:
ダブルクオートの中に変数の内容を埋め込みたいときに使います。
式展開と呼ばれています。
下記を参照ください。
https://pikawaka.com/ruby/formula-expand

マニュアルでは
https://docs.ruby-lang.org/ja/latest/doc/spec=2f …
の式展開の個所です。
ハッシュとa.newは関係ありません。


>疑問③ "begin: a=#{a} b=#{b} c=#{c}\n"の所で、このbeginは、当然begin句とは、別物ですよね?

回答:はい、別ものです。単なる文字列です。そのbeginはなくても構いません。余分でした。
この回答への補足あり
    • good
    • 0
この回答へのお礼

No.2です。
迅速な回答ありがとうございます。

お礼日時:2025/03/20 16:02

メソッド定義の中では、begin句を省略できます。


--------------------------------------------------
def main
a = ARGV[0].to_i
b = ARGV[1].to_i
print "begin: a=#{a} b=#{b}\n"
c = b / a
print "begin: a=#{a} b=#{b} c=#{c}\n"
rescue
print "error occured!\n"
end
main()
print "prcess end\n"
--------------------------------------------
上記のスクリプトを ex4.rb のファイル名で保存します。

ケース①正常ケース
ruby ex4.rb 5 20
begin: a=5 b=20
begin: a=5 b=20 c=4
prcess end

ケース②エラーケース(rescueが実行されるケース)
c = b / a・・・でaが0の為、エラーになる。

ruby ex4.rb 0 20
begin: a=0 b=20
error occured!
prcess end
この回答への補足あり
    • good
    • 0
この回答へのお礼

No.1です。
迅速な回答ありがとうございます。

お礼日時:2025/03/20 08:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています