- リーダブルコーディング技術スレ
212 :デフォルトの名無しさん[sage]:2014/11/19(水) 00:41:55.06 ID:eeZRz+g3 - >>211
hash = data.empty() ? INVALID_HASH : ComputeHash(data);
|
- リーダブルコーディング技術スレ
217 :デフォルトの名無しさん[sage]:2014/11/19(水) 20:19:45.26 ID:eeZRz+g3 - >>214
>ちなみに複数行にわたる時はどうします? hash = data.empty() ? ( INVALID_HASH ) : ( ComputeHash(data) ) ; 理屈は >>215、いわゆる参照透明性のことで、 関数型言語や Ruby のような関数型プログラミングに適した言語ならではのコード ・Rubyによる関数型プログラミング http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html なお Ruby には C と同様な条件演算子(三項演算子)もあるけど、 複数行にわたる場合には if 式を使うのが普通 hash = if data.empty() INVALID_HASH else ComputeHash(data) end
|
- クロージャって何がいいの? [転載禁止]©2ch.net
150 :デフォルトの名無しさん[sage]:2014/11/19(水) 22:27:12.37 ID:eeZRz+g3 - >>144,147
それだと doHoge の実行中に例外が発生するとファイルがクローズされない たとえばクロージャを多用する Ruby のような言語だと、以下のように書く File.open(..) do |file| doHoge do file.puts(msg) end end Ruby ではクロージャをブロックと呼ぶけど、ブロック実行中に例外が発生しても ファイルは確実にクローズされるし、ユーザ定義メソッドでも同様な振る舞いを実装できる >>146 それに対して、クロージャを持たない手続き型言語の Pascal や Python といった言語では、 同じ事をするのに(>>146 のような) with 構文を使わなければ書けない クロージャは一級市民だから引数で渡したり呼び出すことができるという自由があるけど、 with 構文はあくまで文(statement)だからクロージャと比較すれば表現力は制限される いわばクロージャという概念を持たない言語の代用品が with 構文である なおJavaScript はクロージャと with 構文のどちらも持っているけど、 書籍 "JavaScript: Good Parts" だとクロージャは Good Parts に with 構文は Bad Parts に分類されている
|
- Ruby 初心者スレッド Part 55
823 :デフォルトの名無しさん[sage]:2014/11/19(水) 22:28:07.63 ID:eeZRz+g3 - >>822
アンチRubyの悲痛な叫びが心地よい
|
- クロージャって何がいいの? [転載禁止]©2ch.net
155 :デフォルトの名無しさん[sage]:2014/11/19(水) 23:57:41.67 ID:eeZRz+g3 - クロージャと with 構文のどちらも持っている言語であれば、
ケースバイケースで可読性や好みで使い分ければいいのではないかと 問題はクロージャを持たない、あるいは 「世間一般のクロージャの要件(>>104)」を満たせない言語では、 with 構文という(クロージャと比べて)不自由な代用品を使わざるをえない という話
|