和Google互补的搜索引擎Wolfram|Alpha
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
作者 Jonathan Allen 译者 张龙 发布于 2008年8月29日 上午1时31分
当前.NET语言如VB和C#还不支持泛型的协变(covariance)与逆变(contravariance)。尽管微软中的很多人也在谈论它,但是在不远的将来这还是不太可能出现。对协变与逆变的完整介绍要花很长时间。基于此,请大家参考Eric Lippert的关于C#中的协变与逆变的系列文章。为了在VB中增加协变与逆变的泛型支持,Lucian Wischik提出了下面的语法。
类型参数可由关键字“In”和“Out”修饰。“In”类型只能作为方法参数。与此类似,“Out”类型只能作为方法的返回类型。
使用Out类型的一个例子就是IEnumerable(Of T)。如果某函数接受一个IEnumerable(Of Animal)类型参数,那么我们就可以给它传一个IEnumerable(of Bird)。对于In类型,一个不太恰当的例子就是顺序。看一下下面的接口:
Interface IWriter(Of T)
Write(value As T)
如果你向接受Writer(Of Animal)类型参数的函数传一个IWriter(Of Bird),当然就不对了。该方法可以将Animal的任何子类传给IWriter.Write,但是它只接受Birds。
如果使用注解,该接口看起来像下面这样:
Interface IEnumerable(Of Out T)
Interface IWriter(Of In T)
这是针对VB编写的,它也可以用在C#上。
interface IEnumerable<out T>
interface IWriter<in T>
不幸的是,这种语法并不能直接应用在大多数常见的场景中。比如IList(Of T),当传给一个向集合中写入的方法时,T应该是In类型。但是当传给一个从集合中读取的方法时,T应该是Out类型。或许这里应该针对IList创建一个基类,该类会将接受T与返回T的方法区分开来。
追溯过去,C#和VB都支持数组协变(out/IEnumerable情况),尽管在逆变的情况下这会导致运行时错误(in/IWriter情况)。这样做的目的是使C#更兼容于Java。大多数人都认为这是一个不好的设计,但是现在却无法改变了。
查看英文原文:Covariance and Contravariance in .NET Generics
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。
罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。
Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。
中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。
HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。
没有回复
关注此讨论 回复