微软宣布推出新的开源编程语言 Power Fx,一种基于 Microsoft Excel 的低代码公式语言;将可以在整个 Microsoft Power Platform 中进行使用。该语言背后的动机是开发一些 Excel 用户熟悉的东西,以内容为中心而不是以程序为中心,并具有实时重新编译的能力。
微软 Power Apps 总监 PM Ryan Cunningham 称,“借助 Power Fx,我们可以在同一时间范围内将开发人员的影响放大许多倍。通过为开发人员提供一种熟悉且易于使用的表达逻辑的方式,我们正在极大地扩展可以构建复杂解决方案的人员。通过使用专业人士期望的工具提供 Power Fx,包括能够在诸如 Visual Studio Code 的文本编辑器中直接编辑应用程序并使用源代码控制的功能,我们使开发人员可以更快地找到与数百万制造商的共同点。”
由于 Power Fx 基于 Microsoft Excel,因此它提供了与 Excel 相似的语法、函数和行为。例如,其公式是声明性的,可以像电子表格一样立即重新计算。微软方面称,Power Fx 帮助开发人员从手动保持变量和数据表更新的繁琐任务中解放了出来。
官方文档指出,所有编程语言(包括 Power Fx)都有表达式:一种表示对数字、字符串和其他数据类型进行计算的方式。例如,在大多数语言中,质量*加速度表示质量和加速度的乘法。表达式的结果可以放在一个变量中,作为一个过程的参数使用,或者嵌套在一个更大的表达式中。
Power Fx 在这一点上更进一步。一个表达式本身并没有说明它在计算什么。这取决于制作者是否将其放置在一个变量中或将其传递给一个函数。Power Fx 不是只写一个没有特定意义的表达式,而是写一个公式,将表达式与一个标识符绑定。人们把力=质量*加速度写成一个数学意义上的计算力的公式,这个公式永远是真的。当质量或加速度发生变化时,力会自动更新为新的值。一个表达式描述了一种计算方法,一个公式给这种计算方法起了一个名字,并把它作为一种配方。“这就是为什么我们把 Power Fx 称为公式语言。”
例如,Stack Overflow 上的这个公式,可以按照相反的顺序搜索一个字符串。在 Excel 中,它看起来如下图:
Power Fx 的工作原理与此公式相同,但将单元格引用替换为控件属性引用:
当输入控件的值发生变化时,Label控件会自动重新计算公式并显示新的值。这里没有像其他语言中常见的OnChange事件处理程序。
另一个例子,使用公式来计算屏幕的填充色。当控制红、绿、蓝的滑块改变时,背景色会自动改变,因为它正在重新计算。
滑块控件没有像其他语言中常见的 OnChange 事件。根本没有办法明确地设置Fill属性值。如果颜色没有按照预期工作,你需要看这一个公式来了解为什么没有工作。你不需要在应用程序中搜索,找到一段代码,在一个意外的时间设置属性。没有时间元素,始终保持正确的公式值。
当滑块设置为深色时,红色、绿色和蓝色的标签将更改为白色以进行补偿。这是通过在每个标签控件的Color
属性上使用一个简单的公式完成的。
这样做的好处是,它与Fill
颜色发生的情况是隔离的,这是两个完全不同的计算。代替大型的整体过程,Power Fx 逻辑通常是许多独立的较小公式。这更容易理解,并且可以在不干扰现有逻辑的情况下进行增强。
目前,Power Fx 已被集成到 canvas apps 中。微软方面透露,在接下来的 24 个月里,他们计划在整个 Power Platform 的范围内将 Power Fx 扩展为一种统一的语言。