Questions tagged «extensibility»

19
具有类似Lisp的语法扩展机制的编程语言
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我对Lisp的了解有限(尝试在业余时间学习一些知识),但据我了解,Lisp宏允许通过在Lisp本身中进行描述来引入新的语言结构和语法。这意味着可以将新构造作为库添加,而无需更改Lisp编译器/解释器。 这种方法与其他编程语言完全不同。例如,如果我想用一种新的循环或某种特定的习惯来扩展Pascal,则必须扩展该语言的语法和语义,然后在编译器中实现该新功能。 Lisp家族之外是否还有其他编程语言(即Common Lisp,Scheme,Clojure(?),Racket(?)等)提供了类似的在语言本身内扩展语言的可能性? 编辑 请避免进一步讨论,并在回答中要具体。我希望从概念的角度来理解一堆专门针对Lisp宏作为扩展机制的东西,以及哪些非Lisp编程语言可以提供某种概念,而不是一堆可以以某种方式进行扩展的编程语言的清单。靠近他们。


2
如何使ASP.NET MVC网站模块化
我正在计划用ASP.NET MVC 4构建的员工Intranet系统。我们希望该站点由单独的“模块”组成,每个模块都提供不同的功能:消息传递,薪资变更等我希望这些模块能够在编译时启用或禁用。主页将显示某种导航,该导航将链接到所加载的每个模块。 到目前为止,这很容易,但是我不希望导航功能必须事先了解模块。换句话说,我希望模块是动态可发现的。我希望能够为新模块编写代码,然后将链接添加到导航栏中,而源代码中其他任何地方都没有代码更改。每个模块都应该有某种向导航栏注册的方式,更重要的是,每个模块在加载时都应完成此操作。 我认为这排除了使用MVC的区域的能力,因为这些区域是针对事先知道站点布局的情况而设计的。尽管人们似乎已经成功地将MEF与MVC相结合,但MEF似乎是适当的。MEF实际上是到达这里的方法,还是有更好的方法来完成我需要的工作?

5
如何创建具有任意/通用类别节点的可变的,可变的jtree?
请注意:我不想在这里进行编码帮助,Programmers原因是我在这里。我想提高我的程序计划/编写技能,而不仅仅是(对)我对Java的理解。 我正在根据此处针对LARP游戏列出的技能,试图找出如何制作具有任意类别系统的树。我先前的尝试对技能是否也是一类产品感到很失望。尝试对此进行编码很乱。画出我的树时,我注意到只有我的“叶子”才是技能,我将其他人标记为类别。 我所追求的是一种制作树的方法,该树尝试将模型和视图分开,并允许将任意类型的子节点(具有独立的编辑/渲染方式)添加到任意父节点。 注意:这里的所有东西都是作为技能购买的,即使看起来像是房产。最终用户会将其视为购买技能(他们在纸上atm上做的事情),因此应将其呈现在同一页面上。 树的解释:树是“出生的”,具有一组硬编码的最高级别类别(武器,身体和心理,医疗等)。由此,用户需要能够增加一项技能。最终,他们希望增加例如“单手剑专精” 技能(而非物品)。为此,理想情况下,请单击“添加”并Weapons选中,然后One-handed从出现在该子节点上的组合框节点中进行选择,然后再次单击“添加” ,然后在出现的该子节点上的文本字段中输入名称。然后再次单击添加以为该叶子添加/指定“级别”或“层”;首先是熟练程度,然后是专业化(例如)。 当然,如果您想购买其他技能,那是完全不同的途径。您可能不需要像使用武器示例那样在树下同一级别的组合框,也不需要其后的其他逻辑。这就是我难以理解的地方,更不用说编程了。如何制作一组类,而不指定将它们连接在一起的顺序,但是仍然使它们都适合。 用代码描述这种树的好的系统是什么?我见过的所有其他JTree示例都具有一些可预测的模式,而我的则没有。我不想在“文字”中编写全部代码,而在父级上应允许列出子节点的类型(组合框,文本字段等)的长列表。我应该使用抽象类吗?接口? 当我添加上面未列出的其他行为不同的技能时,如何使这类对象集群可扩展? 如果没有一个好的系统可以使用,那么是否有一个好的过程可以弄清楚该怎么做呢? 我脑海中的齿轮正在转动: 我总是需要: 检查父母 提供基于父项的选项 由于这种共性,我开始思考,我需要某种抽象/接口skill类来定义/概述技能和类别的通用方法。我可以(希望)将规则和选项放入数据库中并从中读取。现在我想的问题是,在抽象或接口方法与如何实现该方法之间。
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.