![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつも、ご教授ありがとうございます。
Ruby でメソッドを自作してそのメソッドにブロックを持たせる場合
ブロック内で返り値を返すためにはどうしたらいいのでしょうか?
たとえば以下のような自作メソッドがあるとすると
def blocktest(str)
if (block_given?)
yield str
else
print "メソッドにブロックが与えられていない";
end
end
begin
#自作したメソッドにブロックを与えた場合
res = blocktest("ブロック付きメソッドのテスト") {|value|
print value;
print "<br/>"
print "メソッドに与えられた引数をprintしています"
return "ブロックで返り値"
}
print res;
print "<hr />"
#ブロックを与えない場合
blocktest("ブロック付きメソッドのテスト");
rescue => ex
print ex.message
end
上記のようにブロック内で返り値 を指定して変数resのその返り値を返したい場合
どうしたらいいのでしょうか?
一応、ブロック内でreturnで値を与えてはいますが、例外が発生します。
よろしくお願いしまう。
No.1ベストアンサー
- 回答日時:
そういうときは、return でなく、break を使います。
return はメソッドからの戻りなので、たとえば、
def foo
(1..10).each do |i|
return 1 if i==3
end
0
end
のreturnは、eachからの抜け出しでなく、fooの終了になります。
お書きのプログラムだと、メソッドの中じゃないのにreturnしてるので、エラーですね。
ブロックからの抜け出しはbreakです。
中級以上の話になると、lambdaとprocというオブジェクトがあって、lambdaのブロックの中ではreturnが使えるなど、ちょっとややこしい話になりますが、初級のうちは気にしなくていいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あせんうぶり言語
-
教えてください
-
パイソンエラーについて
-
秀丸エディタで、同じ記号で囲...
-
C言語の入力した文字を反転させ...
-
GitHubは初年度以外は有料にな...
-
pythonエラー
-
英数字を含む文字列(0-9,A-Z)...
-
【メモリ不足で落ちる(python)】
-
100万件越えCSVから条件を満た...
-
Accessで文字列のバイト数読み込み
-
ビーリアルのユーザー名を変え...
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
-
WinSCPで画像のように puttyを...
-
パソコンのスクリーンセーバー...
-
こういう問題分をよんだとき
-
バーチャルボックスが使えなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Rubyの超初心者です。「戻り値r...
-
【BrowseForFolderでデスクトッ...
-
python return 関数
-
【引数と戻り値の違い】 はじめ...
-
CloseとQuitについて
-
再帰に関する質問です。
-
ブロックつきメソッドやyield文...
-
railsチュートリアル5章の演習
-
ぱいソン
-
rubyでのproc
-
【Ruby】 文法的に何が悪いの...
-
Rubyにインクリメンタル演算子...
-
ハッシュ(単語数を数える) た...
-
Ruby 自作メソッドのブロック...
-
レコードセットオブジェクトの...
-
Ruby Fileクラスについて
-
timesの使いどころ
-
ジェネレーターとはなんですか?
-
Unixのwcコマンドの簡易版ですが
-
自作したメソッド・・・こんな...
おすすめ情報