タグ付けされた質問 「extension-method」

13
Any()がnull参照例外をスローしないことを期待するのは理不尽ですか?
拡張メソッドを作成する場合、もちろん、それを呼び出すことができnullます。ただし、インスタンスメソッドの呼び出しとは異なり、nullで呼び出す場合、aをスローする必要はありませんNullReferenceException->手動でチェックしてスローする必要があります。 Linq拡張メソッドの実装について、Any()MicrosoftはArgumentNullException(https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/AnyAll.cs)をスローすることを決定しました。 書かなければならないのはイライラする if( myCollection != null && myCollection.Any() ) このコードのクライアントとして、例えば((int[])null).Any()戻るべきだと期待するのは間違っていますfalseか?

3
Swiftの各デリゲートに個別のクラス拡張を使用する理由は何ですか?
私はレイ・ウェンダリッヒのチュートリアルを進めていましたが、作者がクラス拡張機能を使用してデリゲートコールバックを保持していることに気付きました。 クラス拡張内のコールバックを委任する: extension LogsViewController : UIPopoverPresentationControllerDelegate { func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { ... } } それをクラス内に含めるのではなく: クラス内のコールバックを委任する: class LogsViewController : UITableViewController, UIPopoverPresentationControllerDelegate { func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { ... } } 私はこれを同時に奇妙で面白いと感じました。「LogsViewControllerExtension.swift」という名前のLogsViewControllerクラスの拡張機能専用のファイルがあり、デリゲートプロトコルごとに異なる拡張機能があります:UITableViewDataSource、UISplitViewDelegateなど。 それぞれ独自のファイル内でコールバックを委任する複数のクラス拡張機能: extension LogsViewController: UISplitViewControllerDelegate { ... callbacks } extension LogsViewController : UIPopoverPresentationControllerDelegate …

4
Javaの主な焦点は何ですか?新機能を入手するのになぜこんなに時間がかかるのですか?
私は、ラムダ式、拡張メソッド、新しいストリームAPIなど、JDK8の新機能を調査しています。 明らかに、これらの機能のどれもプログラミングの世界で新しいものではないので、なぜ今までこれらすべての機能がJavaで利用されているのか不思議に思いました。 Lisp(1958)、SML(1973)、Haskell(1990)、Python(1991)、JavaScript(1994)、Ruby(1995)、Scala(2003)、C#(2007)、およびLispの55年後にラムダ式があり、 Java(2013)では実質的に他のすべての人。 そして、私はSIC(1996)のストリームについて読みました。 なんで今なんだろう?証拠は、他の言語との競争が動機ではないことを示唆しています。 このリリースのJavaの優れた新機能はすべて、並列処理の実装の副産物にすぎないようです。ラムダは、並列アルゴリズムの記述を簡単にするためにあり、ラムダ式が必要とする変更などをサポートするためにそれらを必要とするため、拡張メソッドがあります。 したがって、私の質問は、このJavaの次のリリースのメイントピックが実際に並列処理であることを安全に確認できるでしょうか。それとも、今までJavaで本の中で最も古いトリックが登場した他の理由を正当化できるでしょうか。

4
インターフェイスの拡張メソッドをinterface.csファイルに含める必要がありますか?
この設定を想像してください: public interface IMass{ double Mass {get;} } public static class IMassExtension { public static double ToKg(this IMass massObject) { return massObject.Mass / 1000.0; } public static double CalculateInteractiveGravity(this IMass massObject, IMass otherMassObject) { return blah; } } 拡張クラスをインターフェースと同じファイル(つまり、IMass.cs)に配置してもよいですか、それとも別のファイル(IMassExtension.cs)に配置する必要がありますか? ここでは基本クラスは使用できません。想像してみて public class Person : Animal, IMass {} そして public class …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.