Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。
Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。
Q&A
1回答
947閲覧
総合スコア12
0グッド
0クリップ
投稿2018/11/26 00:52
0
def greeting "hello" ensure puts "Ensured called!" "hi" end puts greeting
puts greetingをした時の正しい挙動は?
答え Ensure called! hello
この時なぜ、helloが答えに含まれるのかが理解できません。 だれか教えてくれませんか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
2018/11/26 01:29
回答1件
るりまより
クラス/メソッドの定義/メソッド定義 などの定義文では、それぞれ begin なしで rescue, ensure 節を定義でき、これにより例外を処理することが できます。
なので、beginが省略されている事がわかります。
begin
補ってやると
rb1def greeting 2 begin 3 "hello" 4 ensure 5 puts "Ensured called!" 6 7 "hi" 8 end 9end
rb
1def greeting 2 begin 3 "hello" 4 ensure 5 puts "Ensured called!" 6 7 "hi" 8 end 9end
になります。
begin式全体の評価値は、本体/rescue節/else節のうち 最後に評価された文の値です。また各節において文が存在しなかったときの値 はnilです。いずれにしてもensure節の値は無視されます。
なので、メソッドgreetingを評価した値はbegin式を評価した値=本体の最後に評価された文の値 なので"hello"が返されます。
greeting
"hello"
投稿2018/11/26 01:35
総合スコア15149
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
まだベストアンサーが選ばれていません
アカウントをお持ちの方はログイン
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
RubyGoldの問題についての質問