Questions tagged «extension-method»

13
期望Any()* not *引发null引用异常是否不合理?
当你创建一个扩展方法就可以了,当然,调用它null。但是,不像一个实例方法调用,调用它在空不具有扔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() ) 作为此代码的客户端,我期望eg ((int[])null).Any()应该返回false吗?

3
由于什么原因,您会为Swift中的每个委托使用单独的类扩展?
我正在阅读Ray Wenderlich教程,并且注意到作者使用类扩展来保存委托回调,而不是让它们在类本身中进行处理,即: 类扩展内的委托回调: extension LogsViewController : UIPopoverPresentationControllerDelegate { func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { ... } } 而不是将其包含在类中: 在类内委托回调: class LogsViewController : UITableViewController, UIPopoverPresentationControllerDelegate { func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { ... } } 我同时发现这很奇怪也很有趣。他有一个专门用于LogsViewController类的扩展的文件,名为“ LogsViewControllerExtension.swift”,并且每个委托协议都有一个不同的扩展名:UITableViewDataSource,UISplitViewDelegate等,即: 多个类扩展,每个都有自己的文件中的委托回调: extension LogsViewController: UISplitViewControllerDelegate { ... callbacks } extension LogsViewController …

4
Java的主要重点是什么?为什么要花这么长时间才能获得新功能?
我一直在探索JDK8中的新功能,例如lambda表达式,扩展方法和新的流API。 显然,这些功能都不是编程世界中的新增功能,这使人们感到奇怪的是,为什么到目前为止在Java中都无法获得所有这些功能。 Lisp(1958),SML(1973),Haskell(1990),Python(1991),JavaScript(1994),Ruby(1995),Scala(2003),C#(2007)和Lisp和55年后有lambda表达式Java(2013)中几乎所有其他人。 我在SIC(1996年)中读到有关流的信息。 我一直在想为什么现在呢?有证据表明,与其他语言竞争不是动机。 看来,此Java版本中的所有很酷的新功能只是实现并行性的副产品。我们之所以拥有lambda,是因为它们使编写并行算法变得更加简单,而我们拥有扩展方法,是因为我们需要它们来支持lambda表达式所需的更改等。 因此,我的问题是:我们能否安全地确认即将发布的Java版本中的主题实际上是并行性?还是我们可以证明迄今为止使用Java编写本书中最古老的技巧的其他原因?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.