问题标签 [declarative]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1004 浏览

xml - xslt 的优雅示例?

在通过 XAML 进行了长时间的学习循环之后,我回到了 HTML 和 javascript,并意识到声明性代码的概念——就转换规则而言——是一个非常强大的概念。

尽管语法过多,XML 的 XSLT 处理是声明式转换编程的基石。然而,我总是发现很难理解 XSLT 将如何用于日常任务(使用 XML)。

除了生成 HTML 之外,还有哪些 XSLT 优雅地解决编程问题的好例子?

我猜它擅长图形转换和数据再处理......

编辑:我希望有一些实际的例子——让我完全不了解 xslt 的一件事是代码的视觉复杂性。

0 投票
14 回答
9096 浏览

java - Java 中声明式 GUI 编程的建议

我想知道是否对 Java 中的声明式 GUI 编程有任何建议。(我讨厌基于视觉的 GUI 创建器/编辑器软件,但对手动实例化 JPanels 和 Boxes 以及 JLabels 和 JLists 等有点厌倦了。)

这是我的总体问题,但对于我正在考虑采取的方法,我有两个具体问题:

  1. JavaFX:在JavaFX 中是否有一个真实的GUI 显示(例如,不是圆形和矩形,而是列表框、按钮和标签等)的示例,它可以与访问和更新各种元素的Java 源文件交互?

  2. Plain Old Swing with something to parse XUL-ish XML:有没有人发明了一种用于 XML 的声明性语法(如 XUL)以与 Java Swing 一起使用?我想不难做到,创建一些基于 STaX 的代码,它读取 XML 文件,实例化 Swing 元素的层次结构,并通过某种对象模型使层次结构可访问。但我宁愿使用众所周知的、有文档记录和测试过的东西,也不愿自己发明这样的东西。

  3. JGoodies Forms——不完全是声明性的,但有点接近,我在 JGoodies Binding 上运气不错。但是他们的表单布局语法似乎有点神秘。

编辑:这里有很多很棒的答案!(我在上面添加了#3)我会特别感谢听到你们中的任何人在将这些框架之一用于实际应用程序方面的任何经验。

ps 我确实尝试了一些谷歌搜索(“java gui declarative”),只是不太知道要寻找什么。

0 投票
1 回答
161 浏览

java - Java中可变模型的声明性派生属性

是否有用于同步 POJO 属性的框架?例如,我想表达(以某种高级的、声明性的形式),foo.text = bar.text + baz.text或者foo.y = (max(bars, y)).y不必注册属性更改,元素添加和删除值和(尤其是)集合上的侦听器,这些是重复且容易出错的。

0 投票
9 回答
628 浏览

programming-languages - 探索声明式编程语言的技巧?

问题

如前所述,你有什么技巧可以帮助你了解/理解/让你的头脑围绕声明性编程语言?

或者这仅仅是一个案例,你必须让自己沉浸在语言和它的语法中,直到它渗入,直到你得到你得到它的黄金时刻。这不是一个真正的选择,因为我再也不能连续几天把自己锁在一个房间里,研究超过六本关于该主题的不同书籍(责任就是它们的全部内容)

那么,当你处理声明性语言时,有什么提示或技巧对你有帮助,有什么见解可以传递吗?

PS我个人会赞成第一个回答“<em>闭嘴并投入工作”的答案。

背景

当我第一次开始编写代码时,我 13 岁(基本,在我的姐妹Oric-1上)。

从那时起,我使用了许多新概念和许多不同的语言,从容不迫,我很快就占了上风。面向对象?不麻烦。事件驱动范式?给我吸一口腌鱼,我会回来吃早餐的。

Owl、Mfc、ActiveX、Vb3、4、5 和 6、VB.Net、Pascal、Delphi、C、C++ 和 C#。没有人挡住我的路,至少不会持续很长时间。

然而最近我的满分却受到了一些打击。

几周前,我全身心地投入到 Xaml 中,伙计们,我比游泳更容易下沉。

我认为我的主要问题是它是声明性的。我所有其他的编程技能都是程序性的。我以前用 MSBuild 遇到过这个问题,我可以复制一些例子来说明如何让 MSBuild 工作,但是从头开始把一些东西放在一起会丢失。

回到 Xaml,目前我正在疯狂地尝试将触发器连接到属性并获得我需要的效果。

我可能会尽快在此处发布我的特定 Xaml 问题。现在我在问这个一般的“声明式编程”问题。

PS不,我实际上并没有这么自大。是的,当我第一次接触 OO 和第一次编写事件驱动的 UI(Windows 3.11 上的 VB3)时,我跌跌撞撞。

编辑

它开始陷入困境,让我在这个领域走到这一步的坚韧正在得到回报,只是需要这么多的水力压裂时间

. . . 我觉得我对这些东西太老了。. . :)

0 投票
8 回答
2327 浏览

php - PHP 中的通用声明式表达式生成器

伙计们,

我正在寻找构建一个PHP5 UI,我很确定它对一堆应用程序很常见。基本上,它是一个表达式构建器,允许用户指定通过逻辑运算符 (AND/OR) 组合的表达式,如下所示:

  • 场 X > 3 和场 Y = 5
  • FieldY = "bob" 并且 FieldZ 不为空
  • FieldX > '5/23/2007' OR (FieldY = 5 AND FieldY 不为空)

理想情况下,像这样的系统将允许我作为程序员指定用户可以选择的参数列表(列)以及每个参数的数据类型。它还将提供一个很好的、用户友好的界面来定义这样的表达式 - 我在想象一个类似于表格的东西,其中每一行都有几个选择器:

[列] [条件] [值] [AND/OR] [列] [条件] [值] [AND/OR] ...

你知道做类似事情的开源组件吗?或者也许是这种功能的一部分?

0 投票
3 回答
8544 浏览

java - OSGI 声明式服务 (DS):什么是使用服务组件实例的好方法

我刚刚开始使用 Equinox 和 Eclipse PDE 使用 OSGI 和声明式服务 (DS)。

我有 2 个捆绑包,A 和 B。捆绑包 A 公开了一个由捆绑包 B 使用的组件。两个捆绑包也再次将此服务公开给 OSGI 服务注册表。

到目前为止一切正常,Equinox 正在将组件连接在一起,这意味着 Bundle A 和 Bundle B 由 Equinox 实例化(通过调用默认构造函数),然后使用 bind / unbind 方法进行连接。

现在,由于 Equinox 正在创建这些组件/服务的实例,我想知道获取此实例的最佳方法是什么?

所以假设有没有被 OSGI 实例化的第三类:

我现在看到以下选项:



1. 在 Activator 中使用 ServiceTracker来获取 ComponentBundleA.class.getName() 的服务(我已经尝试过了,它可以工作,但对我来说似乎开销很大)并通过静态工厂方法使其可用

2. 创建某种注册表,其中每个组件在调用 activate() 方法后立即注册。

或者

}

3. 使用 osgi / equinox 中的现有注册表,其中包含这些实例?我的意思是 OSGI 已经在创建实例并将它们连接在一起,所以它已经在某个地方拥有了对象。但是哪里?我怎样才能得到它们?

结论WantsToUseComponentB 类(不是组件,也不是由 OSGI 实例化)从哪里获得 ComponentB 的实例?是否有任何模式或最佳实践?正如我所说,我设法在 Activator 中使用了 ServiceTracker,但我认为没有它也是可能的。

我正在寻找的实际上是类似 Springframework 的 BeanContainer 之类的东西,在这里我可以说类似 Container.getBean(ComponentA.BEAN_NAME) 之类的东西。但我不想使用 Spring DS。

我希望这已经足够清楚了。否则我也可以发布一些源代码来更详细地解释。

谢谢克里斯托夫


更新: 对尼尔评论的回答:

感谢您针对原始版本澄清这个问题,但我认为您仍然需要说明为什么不能通过 DS 之类的东西创建第三类。

嗯不知道。也许有一种方法,但我需要将我的整个框架重构为基于 DS,以便不再有“new MyThirdClass(arg1, arg2)”语句。真的不知道该怎么做,但我在 DS 中读到了一些关于 ComponentFactories 的内容。所以而不是做一个

我可能会做一个

在撰写本文时,我并不确切知道如何使用 ComponentFactories 但这应该是某种伪代码 :)

谢谢克里斯托夫

0 投票
2 回答
611 浏览

wcf - WF、WCF 和声明式服务(或:Microsoft 的“声明式”是什么意思?)

我制作了这个社区 Wiki,因为有些人可能认为它可以进行辩论,而另一些人可能认为这是一个用词来表达他们真正意思的问题(换句话说,它是否是一个意见问题是一个意见问题)。

SO上有一个关于声明式编程的一般问题,它有一些很好的答案。

但我有点被微软传道者的这篇博文所震撼。

声明式编程的一个优点是您可以指示您想要做什么,但不能指示如何去做。

到目前为止,一切都很好 - 事实上,这与 SO 问题的公认答案完全一致。

但是然后查看有关“服务实现”的部分,

您只需查看几十行 xaml 代码,就可以确定 WCF 服务是如何配置的,以及相应的工作流是如何定义的。

看过一些例子后,让我简要回答一下“不,我不能”。但是,与其轻率地忽略这些东西,不如让我们看看文档

花了一段时间,但最终现实已经赶上了讽刺......但这不是重点 - 当然,他们并没有认真建议这样做来揭露一些琐碎的事情,比如加法。我也不是在抱怨荒谬的冗长,以及任何人都会用手编写类似的东西的奇怪想法——它看起来更像是编译器的输出,而不是人类可读的语言。

令我困惑的是,这据称是“声明性的”。然而,它的核心是一个赋值语句。

这里还有更多

声明式服务在 XAML 中以声明方式定义,并提供另一层抽象。基本上,您通过定义您希望服务做什么而不是如何做来创建服务模型。整个服务可以以声明方式定义,包括操作的实现。

因此,如果我们说三遍声明性声明性,那就是声明性的。明白了。如果我们说“你想做什么而不是怎么做”这个神奇的短语,那么我们可以忽略在接下来的句子中,我们将指定“操作的实现”,所以我们将准确地说出如何做到这一点。

该页面中的示例是:

也就是说,整个事情(包括我从 WF 示例中删除的大量垃圾)完全等同于:

所以 - 一个语句块,按照它们出现的顺序执行,并且有副作用。当然还有用于循环的工作流活动元素(如果 WF 还没有你最喜欢的命令式语句,你可以编写自己的活动)。显然,“以不可读的格式重写代码”与“添加抽象层”是一回事。

重申一下,我抱怨的不是疯狂的难以理解的冗长——事实上,它显然是在服务实现中发生的图灵完备的命令式编程,那么有什么意义呢?在你知道之前,我们将在调试器中逐步完成我们的工作流程,试图找出哪个赋值语句改变了哪个值,或者为什么循环会永远循环下去。

(具有讽刺意味的是,在 C# 版本中,它更具声明性,因为我们没有指定字符串片段应如何连接,从而允许编译器生成对Concat方法的更少调用。)

那么在 XML 中编写某些东西是否会使其具有声明性(以及可读性较差)?

0 投票
1 回答
769 浏览

excel - 如何在 Excel 财务模型中表示业务规则?

我在 Excel 中创建了一个“单期”财务模型——即每列中的公式都是一致的模型,因此您可以根据需要复制/粘贴/扩展它们。

我将模型的假设分解为单独的表格。例如,我有一个名为monthly_sales; 这就是我每个月添加的新客户数量。然后公式如下所示:

假设表 1.0

投影表 1.0

所以在八月份,我将有 6 个客户;9月,12个客户;10 月,18 位客户。到现在为止还挺好。但是我最早的客户需要更多的开发资源,对吧?我最好添加一些限制。

假设表 2.0

英文:前 3 位客户每人需要 2 个月的开发时间。从 8 月到 11 月,我有 1 个客户。12 月,我添加了第二个客户,4 月又添加了第三个。到 2010 年 8 月,我完成了early_customers,然后我可以开始每月增长 6 个。

我知道如何用 VBA 做到这一点;我可以编写一个用户定义的函数来检查前几个月,并将# Customers公式更改为类似

但我怀疑有一些方法可以在适当的 Excel 公式中以声明方式表示这个概念。有没有?

0 投票
9 回答
1144 浏览

c++ - 在 C++ 中解释声明性谬误的最佳方法是什么?

如何很好地解释为什么以下代码不正确,因为作者试图以声明方式而不是程序方式编写 C++ 代码?

作者希望cout显示正确的计算结果,但却得到了一个“疯狂的数字”。

我将此解释为“C++ 是程序性的,因此在声明时

newtons没有被赋值。

有更好的建议吗?或者解释为什么 C++ 不够“聪明”来执行用户错误预期的行为?

0 投票
1 回答
1779 浏览

python - 声明性 SQLAlchemy 中的标签字典?

我正在处理一个使用 实现的相当大的代码库,sqlalchemy.ext.declarative我需要向其中一个类添加一个类似字典的属性。我需要的和这个问题一样,但是以声明的方式。有更多 SQLAlchemy 知识的人可以举个例子吗?提前致谢...