是否有任何编程语言支持像“12.Pounds.ToKilograms()”这样的表达式?

时间:2017-02-25 15:33:59

标签: language-agnostic programming-languages units-of-measurement

可以通过一种或另一种方式在大多数编程语言中实现将单位和测量值从一个系统转换为另一个系统。但是,我们能用任何编程语言表达“12.Pounds.ToKilograms()”之类的内容吗?

4 个答案:

答案 0 :(得分:1)

不完全是那种语法,但你可能想看看Frink:https://frinklang.org

Frink语法类似于Google Calculator或Wolfram Alpha,但不完全相同。 Google和Wolfram Alpha使用in关键字触发单位转换,而Frink使用->运算符。所以在frink中,以下是有效的源代码:

    // Calculate length of Wifi antenna:
    lightspeed / (2.4GHz) / 4 -> inches

正如我所提到的,这种语法与Google类似。作为参考,Google语法中的相同计算为speed of light / 2.4GHz / 4 in inches。 Frink早于 Google计算器和Wolfram Alpha。我在21世纪初的某个时候第一次意识到眨眼。

Frink是单位意识到的。即使该单位只是"标量"在frink中的数字总是有单位。 (没有单位)。因此,要声明一个12磅的变量:

var x = 12 pounds

转换你:

x -> kg

或者你可以简单地写下表达式:

12 pounds -> kg

答案 1 :(得分:1)

在Smalltalk中你可以将其表达为

12 pounds inKilograms

请注意,您可以对两个消息poundsinKilograms进行编程(还有一些库可以执行此类操作)。但关键是上面的表达式在Smalltalk中完全有效(即使这些消息不存在)。

答案 2 :(得分:0)

我无法说我曾经认为这是一个有效的表达方式。 12必须被定义为一种类型。假设12是整数。整数类型只知道它是一个整数,并且在大多数语言中都有内置的整数函数/方法。要使其成为有效的表达式,您需要定义权重类型,并在该对象中定义转换方法或使用转换方法继承子类型。

答案 3 :(得分:0)

你可以在Ruby中使用它,因为它的语法糖。

实际上有红宝石宝石 - alchemist - 你应该检查一下。 例如,您可以写: 10.miles.to.meters