bru*_*ton 23 syntax programming-languages
今天在C#中编写以下内容时
DateTime.Now.AddYears(-60)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何语言允许使用单位更自然的语法:
DateTime.Now - 60years
Run Code Online (Sandbox Code Playgroud)
有谁知道吗?具体来说,我对将"60年"变成例如"TimeSpan.FromYears(60)"的单位运算符(?)的存在感兴趣.能够定义自己的单元运算符也很简洁,类似于在C#中编写转换运算符的方式
(是的,我知道TimeSpan多年来都不满足 - 这是一个例子.)
sep*_*p2k 10
那么ruby的ActiveSupport库使用小时和天等方法扩展Integer类,允许你编写如下内容:
Time.now + 5.days
Run Code Online (Sandbox Code Playgroud)
但这并不是一个真正的语法特性 - 它只是一个方法调用,并且可以在任何允许您向现有类添加方法的语言中实现.您可以使用扩展方法在C#中完成它 - 尽管它必须在5.days()那里.
小智 7
有一个单元的Boost C++库,它广泛使用模板元编程来提供类似于你想要的语法.
quantity<force> F(2.0*newton);
quantity<length> dx(2.0*meter);
quantity<energy> E(work(F,dx));
Run Code Online (Sandbox Code Playgroud)
http://www.boost.org/doc/libs/1_37_0/doc/html/boost_units.html