Power Fx —— 低代码编程语言
Microsoft Power Fx 是一种基于类似电子表格公式的低代码通用编程语言。它是一种强类型、声明式和函数式的语言,根据需要可以使用命令式逻辑和状态管理。
Power Fx 是用一种人性化的文本来表达的。它是一种低代码语言,制作者可以直接在类似 Excel 的公式栏或 Visual Studio Code 文本窗口中进行操作。该语言简洁明了,让制作者和开发者都能轻松完成常见的编程任务。它可以实现从从未编程的人的"无代码"到经验丰富的专业人员的"专业代码"的全方位开发,中间没有学习和重写的麻烦,从而使不同的团队可以协作并节省时间和费用。
Power Fx 通过类似电子表格的声明式公式将对象绑定在一起。例如,将 UI 控件的 Visible 属性视为电子表格单元格,并具有一个基于其他控件的属性来计算其值的关联公式。公式逻辑会自动重新计算,类似于电子表格会自动执行,从而影响控件的可见性。此外,在需要时,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 是一种声明式语言,就像 Excel 一样。制作者定义了他们想要的行为,但如何和何时完成这些行为则由系统来决定和优化。为了实用,大部分工作都是通过没有副作用的纯函数来完成的,这使得 Power Fx 也同 Excel 一样是一种函数式语言。
目前,Power Fx 已集成到 canvas app 中。微软方面正在从 Power Apps 中提取它,并计划在 Power Platform 上扩大其使用范围。




