板検索:
関数型プログラミング言語Haskell Part29 (1001)
まとめビュー
ID:W7OP38Mu.neの書き込みを表示中 すべて表示する

829
デフォルトの名無しさん[sage]   投稿日:2015/12/29 13:40:10  ID:X0OP3kiA.net(2)
>828
たしかに bracketOnError の第2引数は、第3引数で例外が発生しない限り実行されません。
その意味では「例外の無い通常運転では第2引数を実行するコストはかからない」のでその分効率的でしょうね。

ただ問題は、そのような処理の流れで本当に大丈夫なの? と言うことです。
あなたが実現させたい処理の流れに合っているかどうか、それが最も大事です。
bracket と bracketOnError のどちらを使っても実現させたい処理に適合するのなら、
より効率的な方を選ぶのも手です(効率の他に、ソースがより読みやすい方を選ぶのも手)。

効率よりもまずは合っているかどうかを考えた方が良いと思います。
>827 で「役割が違う、効率で比較するものではない」と言ったのはそういう意味です。
合わないものを工夫して合わせるのはバグの元なので、
そういう工夫はそれしか手段がない場合のみやるべきだと私は思います。

もし bracketOnError の第3引数にリソース解法処理を「必ず行うように」書くのなら、
あなたがメリットだと感じている「例外がなければ第2引数を実行するコストがかからない」
というのは無くなり、処理的には bracket と「ほぼ」同等になりますが、
それなら bracket を使うべきだと私は思います。
同じ処理を実現するなら、手間がかかる bracketOnError より楽に bracket です。
コメント1件


833
デフォルトの名無しさん[826]   投稿日:2015/12/31 07:48:53  ID:qqIJWikB.net
>829
結論としてbracketOnErrorとbracketは代替可能ですよね。

ちなみ>830は私じゃないのでw
コメント2件

834
デフォルトの名無しさん[sage]   投稿日:2015/12/31 10:26:45  ID:W7OP38Mu.net
>833
おそらく、あなたの期待している処理に関してだけ言えば、両者は代替可能だと言ってしまっても、
実用上それほど間違っていはないと思われます。

歯切れが悪い言い方で申し訳ないです。
というのも、正確に言えば両者は代替できない(と思う)からです。
>829 でも同等性に関して「ほぼ」と断りました。

私が今ぱっと思いつく限りでは2つの異なる点があります。

ひとつは、bracketOnError の第3引数に(わざわざ)書いた開放処理の中で例外が起きれば、
その時点で bracketOnError の第2引数が実行されます。
第2引数でも開放処理が書かれていれば中途半端に二重に実行されます。
どう代替しますか?

もうひとつは外部例外への対処の仕方です(以後、簡単のため正確さは犠牲にします)。

両者の第1引数と第2引数では、外部例外がマスクされます。
一方、第3引数では外部例外のマスクが一時的に開放されます。
外部例外というのは他スレッドから現スレッドに投げられる例外の事だと今は思ってください。
これがマスクされているという事は、外部例外が投げられても処理を最後までやり切る、という事です。

したがって、bracket の第2引数に書いた開放処理と、bracketOnError の第3引数に書いた開放処理は、
外部例外への対応という点に関して異なります。
mask_ という関数を使って外部例外をマスクできますが、それで開放処理を書くのなら、
もうほとんど bracket の第2引数で開放処理を書くのと同義で、代替できると呼べるかどうか。


そもそも、代替できるかどうかに拘る理由が分かりません。
普通、bracketOnError を見たプログラマは、例外が発生しなければ第2引数は実行されない、
という前提でプログラムソースを読むはずです(ドキュメントにそう書かれているので)。
なので、第3引数に開放処理が書かれていれば混乱を生むだけだと思うのですが・・・
コメント1件

835
デフォルトの名無しさん[sage]   投稿日:2015/12/31 10:32:03  ID:W7OP38Mu.net
>833
すいません、>834 で外部例外と言いましたが、言葉が間違っていました。

正しくは「非同期例外」です。
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
激レアさんを連れてきた。★4 (617)テレ朝実況
THE NEWS α (583)フジ実況
月曜から夜ふかし★1 (503)NTV実況
しゃべくり007SP★7 (918)NTV実況
もしかしてズレてる?【藤井リナが3年ぶりにTV登場!▼愛内里菜改名&爆弾告白】★2 (896)フジ実況
AI−TV (586)フジ実況
NEWS ZERO 3 (279)NTV実況
クローズアップ現代+「中国 再エネが日本を飲み込む!?」 (749)NHK実況
このスレッドが人気です(ニュース系)
【北海道・松前町】北朝鮮船に「第854部隊」 島は荒らされ放題 「金目のもの全部ない!」 食べ残しのホッケをとった跡 生活の跡も…★2 (983)ニュー速+
【北海道・松前町】北朝鮮船に「第854部隊」 島は荒らされ放題 「金目のもの全部ない!」 食べ残しのホッケをとった跡 生活の跡も… (1001)ニュー速+
【相撲】日馬富士、起訴猶予へ…モンゴル力士軍団の闇、ビール瓶より危険だった凶器★2 (924)音楽・芸能ニュース
【大相撲】<日馬富士の長女にイジメ>横野リポーターが涙 ネット「泣きたいのは貴ノ岩」 (651)音楽・芸能ニュース
【北朝鮮情勢】菅官房長官 「邦人の安全に影響ない」「韓国への渡航や退避の危険情報出す状況ではない」★2 (965)ニュー速+
【柔道】「もう悪人でいい」内柴正人、フジテレビ独占インタビュー 「被害女性とは合意」主張は曲げず (1001)音楽・芸能ニュース
【社会】「土地は捨てられるのか」 鳥取県の男性、国を相手に実験的訴訟 島根・安来市 (797)ニュー速+
【相撲】日馬富士、起訴猶予へ…モンゴル力士軍団の闇、ビール瓶より危険だった凶器 (1001)音楽・芸能ニュース
プログラム板の人気スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript] (124)
C++相談室 part133 (294)
ふらっと C#,C♯,C#(初心者用) Part134 (150)
次世代言語Part7[Go Rust Swift Kotlin TypeScript] (1001)
C言語なら俺に聞け 143 (697)
Excel VBA 質問スレ Part51 (346)
オブジェクト指向システムの設計 174 (853)
Java入門・初心者質問スレ Part.5 (798)
Visual Studio 2017 Part4 (307)
Pythonのお勉強 Part54 (777)
Xamarin Part6 (346)
Kotlin 2 (271)
プログラミング言語 Rust 4 (356)
Go language part 2 (161)
くだすれPython(超初心者用) その35 (881)
C#, C♯, C#相談室 Part95 (198)
【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (139)
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part21 (844)
【統計分析】機械学習・データマイニング18 (228)
プログラミング始めたいんだけどどこ言語がいい? (203)
☆★Java質問・相談スレッド180★★ (940)
Swift part11 (687)
関数型プログラミング言語Haskell Part31 (321)
【PHP】下らねぇ質問はここに書き込みやがれ 8 (976)
MacでもLinuxでも使えるVisual Studio Code Part2 (799)
スレ立てるまでもない質問はここで 146匹目 (968)
ねえ、これ僕間違ってる? (148)
Win32API質問箱 Build124 (73)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)