2013-12-22 8 views
6

私は最初のインターンシップをやっていて、うまくいきました。他のプログラマーが話していることすべてに追いつこうとしています。上級プログラマーは先日、コードブロックを関数に直接渡すRubyの能力が、JavaScriptでの匿名関数の使用よりもはるかに望ましいと言いました。 JSの無名関数はまったく同じことですが、変数を変数としてパラメータとして渡すだけです。匿名関数より優れたコードブロックパラメータの実例がありますか?あるいは、ある言語での優先度の問題、コードの可読性/再利用性の問題、または単に他の基本概念を誤解していますか?これは、具体的な仕事の問題ではなく、いくつかのタスクのために使用する言語の相対的なメリットについての合理的な会話でした。これはおそらく私が混乱している理由です。私はコードブロックのいくつかの素朴な例を見つけ、JSでそれらを実装するのに苦労しました。問題(匿名またはそれ以外)の入力を楽しみにしています。Rubyコードブロックとjavascriptの匿名関数の違い

+1

。ただし、そのコードはプログラマーやワークグループ/開発チームに適用されるルールに完全に従います。両方とも本質的に同じ結果を目指しています。ラムダ(匿名)関数は、簡単で短い関数コールバックを使用するための単なる選択肢です。 JavaScriptでは、コードの大きなブロックから頻繁に使用されるようです。あなたが知っている限り、*関数*の小さな部分だけを呼び出して使用すれば、ラムダが関数を自分自身の空間(再利用可能)に与えることでおそらく大丈夫です。 –

+1

Rubyについては、次のような意味ですか: 'def meth1;もしblock_givenならyield?終わり; meth1 {puts 42} '? –

+0

@DarekNędzaはい。具体的には、そのタイプのコードブロックはラムダなどではありません。 – ialexander

答えて

4

これらはまったく同じではありません。主な理由は、暗黙的および明示的な戻り値の使用です。

あなたはここで良い記事を読むことができます:あなたは、再利用可能な何かを探しているhttp://yehudakatz.com/2012/01/10/javascript-needs-blocks/

+0

これは本当に素晴らしい読書です! 「Ruby/JavaScript開発者として私が初期段階で共有したこの印象は、大きな意味を持つ重要な微妙さを欠いています。この微妙さはしばしば「Tennent's Correspondence Principle」と呼ばれています。 : "与えられた式exprについては、ラムダexprは同等でなければなりません" "ありがとう! – ialexander

+0

あなたは大歓迎です! – phoet

+0

@wormtown答えを受け入れるのもいいでしょう:) – phoet