我正在阅读一篇关于依赖类型编程的论文,并且发现了以下引用:
"[...]与Haskell的类型类相比,数据类型[...]是封闭的 ",在某种意义上说,如果不扩展数据类型,就无法向Universe添加新类型.
我的新手问题是:Haskell类型类在什么意义上打开?它们如何可扩展?此外,拥有此属性(开放与封闭)的类型理论后果是什么?
谢谢!
我想知道是否有可能扩展Android Contacts数据库?
从这里 - http://d.android.com/reference/android/provider/ContactsContract.html
它说:
ContactsContract定义了与联系人相关的信息的可扩展数据库
可扩展性会向我建议我可以在正常值之外向联系人应用程序添加更多数据,例如姓名,号码,电子邮件,工作号码,家庭电话号码等.
但是,此页面的示例 - http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html仅显示如何插入标准值(如名称),而不显示如何向联系人添加新字段.
此外,在网上搜索没有提供有关扩展联系人数据的大量信息.
所以我想知道它是否可能或者可扩展性是否涉及联系人的其他部分?
例如,我想为我的应用程序中具有特殊权限的联系人添加一个附加字段,这样当用户查看联系人时,他或她知道他们可以使用我的应用程序的用户.
这可能吗?
有没有人知道任何有关XSD/XML的新手教程,这简单地解释了一些事情,但却详细介绍了如何做事情?
我的应用程序应该是可扩展的.为了我自己的需要,我实施了一些服务.这些服务基于IoC/DI原理.因此,服务封装了应用程序的概念.
例如,有一个IApplicationService.ApplicationService公开有关当前例外应用程序的信息.指定了AssemblyInfo等.另一个示例是INavigationService(请参阅示例中的mef.codeplexcom).此服务提供了一些属性,其中包含有关当前所选项目的信息以及某些事件.
我认为,"服务方法"是最简单的,并简化了应用程序的扩展点.所以,我不确定这是否是最好的方法.你怎么看?你如何在像addins/addons/plugins这样的应用程序中实现"扩展点"?
提前感谢您的回复!抱歉,我的英语很差.;)
我不确定这里是否允许这类问题,但它与软件项目有关.
可扩展和可扩展之间有区别吗?
可扩展的子集是可扩展的吗?即可扩展(可扩展)
有些人认为它是一样的,有些人则认为它是不同的.有什么区别?
我被引导相信:
可扩展 - 使系统能够承受更多的使用(带宽等)并使其更大.
可扩展 - 为系统添加更多功能.
他们不一样吗?
编辑:如果可扩展是为系统添加更多功能,并且可扩展可以被视为使系统更大,那理论上是不一样的,证明可扩展只是一个可扩展的子集?
我开始着手我的第一个大项目了.它将是一个与Rosetta Stone非常相似的程序.它将是一个程序,用于学习外语,使用Swing用Java编写.在我的计划中,我计划用户能够选择下载的课程来学习.因为我是母语为英语的人,所以我将能够创建一门英语课程.但是,我希望说其他语言的人能够编写课程供用户使用(这是我的课程工作的重要部分).
由于我希望用户能够下载他们想要的语言课程,因此将其硬编码到程序中是不可能的.需要在运行时解释课程.此外,由于我希望其他人与我的工作合作(即制作课程),我需要让他们这么做.
这样做最好的方法是什么?
我想出的想法是有一个严格的空课程大纲(硬编码)和一个简单的xml文件,详细说明了要使用的文本和声音.这样做的缺点是它极大地限制了作者.不同的语言可能需要从学习不同的部分开始.
对于手头的问题以及整个项目的任何建议将不胜感激.任何相关资源或信息的链接也将不胜感激.
想想你的时间和精力,
约瑟夫庞德
维基百科说:
可扩展编程是计算机科学中使用的一个术语,用于描述一种计算机编程样式,该计算机编程样式侧重于扩展编程语言,编译器和运行时环境的机制。
例如,Tcl使您可以编写自己的控制结构。看这里。
我对编译现实世界代码中正在使用的可扩展编程语言列表感兴趣。如果您还可以提供自己的语言示例,那就太好了。
我正在处理C++中的循环依赖问题.
情况如下:
libA.so:
- Body.cpp
- Header.cpp
- DataObject.cpp
- DataObject::read(boost::asio::streambuf* data)
{
boost::asio::streambuf data;
....
body = (new DataConverter<Body>)->convert(&data);
header = (new DataConverter<Header>)->convert(&data);
}
libB.so:
- DataConverter.cpp
-> DataConverter<T>
-> T* DataConverter<T>::convert(boost::asio::streambuf* data)
libA.so <-> libB.so
Run Code Online (Sandbox Code Playgroud)
存在循环依赖性,因为libA使用来自libB的Converter-Class,而libB现在需要关于需要转换的libA的Object-Types - 因为DataConverter :: convert返回Body或Header对象.
我考虑用前向声明解决这个问题 - 但这对我来说似乎不是最干净的解决方案.总而言之,我的计划是提供可扩展的DataConverter解决方案.
你们有什么建议作为最佳做法?一个完全不同的设计也欢迎:)
最好,塞巴斯蒂安