問題タブ [anonymous-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 匿名デリゲートは型チェックを強制していないようです
以下に小さなコードサンプルをまとめました(現在はC#3.5ですが、C#4.0で答えが異なるかどうかも知りたいです)
3 つの単純なデリゲートと 3 つの単純な関数があります...ここでは問題ありません。すべてが期待どおりにコンパイルされ、誤ってデリゲート A をメソッド B など (パラメーターの数が間違っている) にリンクしようとするとコンパイルされません。
私が理解するのに苦労しているのは、匿名関数が名前付きデリゲートの 3 つすべてにリンクされて満足しているように見える理由です。
また(完全に実行可能なアプリを提供するためだけに...)
編集 1: ラムダ メソッドの使用
シンプルなヘルパー関数:
... 同じコードを書くには、これがより良い方法であることに同意しますか ???
編集 #2 - 回答のまとめ
(コードをどのように記述しても)、生成された IL バイトコードは依然としてタイプ セーフであることを認識しています。
C# の多くのものと同様に、名前付きデリゲート、匿名デリゲート、およびラムダ メソッドにはそれぞれ独自の場所があり、「コードの読みやすさ」、「コンパイラによるコードの拡張」、および個々の適合性との間にバランスがあります。アプリケーションが書かれています。
以下の回答は質問への回答に役立ち、コンパイラが実際に次のようなことを行っていることを示しています。
1 - この間違いは許されない
2 - 「型を推論するコンパイラ」はデリゲート (d5_nocompile など) を
3 - 間違いを犯す可能性があります (これはまだ有効なコードです)
4 - ただし、ラムダ式として書き直すと、コードを後で (または別の開発者に) 見てもらうと、もう少し明白になります。
php - PHPで無名関数を使用する理由と方法は?
無名関数は PHP 5.3 から利用できます。
それらを使うべきですか、それとも避けるべきですか?もしそうなら、どのように?
編集; php匿名関数を使った素敵なトリックを見つけました...
javascript - 1 つの関数内の JavaScript setTimeout setInterval
私は疲れているかもしれないと思いますが、私の人生ではこれを理解することはできません.javascriptの知識が不足しているためだと思います.
これらの2つの関数で私は呼び出すことができます
基本的に、ループタイマーを5.5秒間実行してから終了します。
私の論理では、これは機能するはずですが、単にそうではありません
この問題に関する洞察をいただければ幸いです。
php - 匿名再帰 PHP 関数
再帰的かつ匿名のPHP関数を持つことは可能ですか? これは動作させるための私の試みですが、関数名は渡されません。
また、これが階乗を実装する悪い方法であることも認識しています。これは単なる例です。
function - Scala ジェネリック関数の値 (無名関数) - パラメーターの型がありません (エラー)
私は Scala ( Scala コード ランナー バージョン 2.7.7.final ) を初めて使用しますが、高階関数を使用しているときに呼び出し元がパラメーターの型を指定する必要がある理由がよくわかりません。
以下のサンプルでは、1 つの関数を持つ 1 つのスタンドアロン オブジェクト ( Util
) があります。ただし、Main
ブロックでは、呼び出し元はパラメーターの型を無名関数に渡す必要があります。
Scala が型から関数の型を推測しないのはなぜですかArray
(つまりString
)? それを行う方法はありますか?
javascript - 「逆コンパイル」Javascript機能?
[1] わかりました、正直に言うと、これをどう呼ぶかさえ知りません。それでは、私が何をしようとしているのかを示すために、いくつかの半疑似コードを取得しましょう。createDocument()
私はjQueryを使用して、ページ内、要素内、AJAX呼び出しから宣言された既存のスクリプトを取得しています。
これまでのところ、スクリプトには実際にスクリプト ブロック全体のソースが含まれています。さて、この「script_content」内には、$(document).ready(function(){...}) のような自動実行関数があり、すべてが innerHTML を「評価」し、このコードを実行して、カプセル化されたスクリプトを停止します。 . 存在しない変数など。
正規表現を使用してスクリプトの特定の部分を削除することは、実際にはオプションではありません...私が本当に望んでいたのは、関数内を「歩く」ことです。のように(完全に架空の):
関数を「逆アセンブル」して、その中の「var」に到達できる方法はありますか? この関数のように:
それはまったく可能ですか?または、正規表現を使用して自分のやり方をハックする必要がありますか? ;P
[2] また、「createDocument」で作成したドキュメント内で JavaScript にアクセスする方法はありますか?
javascript - detachEvent が名前付きインライン関数で機能しない
今日、IE8 で問題が発生しました (IE のみをサポートする必要があることに注意してください) detachEvent
。
onIframeReadyStateChange
私は最終的に、代わりに使用するように変更することarguments.callee
(通常は避けます)が問題を解決することを理解しました:
何が得られる?! 最初のスニペットは正常に動作するはずではありませんか?
generics - 匿名のジェネリック Scala 関数を定義するにはどうすればよいですか?
私がこれを持っているとしましょう:
関数が何をするか気にしないでください。Option[T]を持つことができるように、とにかくそれを汎用にすることはできますか?
c++ - ブーストでC++匿名関数を使用することは可能ですか?
無名関数がはるかに簡単にする問題を解決しようとしていますが、これが c++ で可能かどうか疑問に思っていました。
私がやりたいことは(本質的に)
この例は、私がしなければならないことのために非常に単純化されています。C# では、p => p*5 を実行します。これが C++0x で簡単であることはわかっていますが、それを使用することはできません。私は、boost::lambda、またはboost::bindとboost::functionのプレースホルダーを組み合わせたもののいずれかでそれを行うことができるはずだと感じていますが、それを機能させることができないようです. 無理かもしれませんし、それもいいですが、無理なら答えてください。ありがとう。
編集: わかりました、int の単純なケースは正常に動作するようですが、より複雑な構造はどうでしょうか? それでは、試してみましょう
ここで、私の C# 式は p => p.temp * 5 の行に沿ったものになります。ブーストを使用して C++ でこれを行うことは可能ですか?
編集 2: OK、今私はただ興味があります:D ラムダ式内で関数を呼び出すにはどうすればよいですか? だから、私たちが持っているなら
C# では、p => ChangeVal(p) を呼び出すことができます。C++ ラムダ式を使用した場合、構文はどのようになりますか?
c# - 匿名関数をオーバーロードする
まだデリゲートに頭を悩ませているので、興味があります。無名関数をオーバーロードすることは可能ですか?
そのような:
サポート:
と:
許可:
と: