【发布时间】:2011-12-29 23:02:26
【问题描述】:
在 C# 中,您可以执行以下操作:
var a = new {name = "cow", sound = "moooo", omg = "wtfbbq"};
在 Python 中你可以做类似的事情
a = t(name = "cow", sound = "moooo", omg = "wtfbbq")
当然不是默认的,但是实现一个类t 让你做到这一点是微不足道的。事实上,当我使用 Python 时,我确实做到了这一点,并发现它对于小型一次性容器非常方便,您希望能够通过名称而不是索引访问组件(这很容易混淆)。
除了这些细节之外,它们基本上与它们所服务的领域中的元组相同。
特别是,我现在正在查看这段 C# 代码:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
它是 F# 等价物
type Route = {
controller : string
action : string
id : UrlParameter }
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
{ controller = "Home"; action = "Index"; id = UrlParameter.Optional } // Parameter defaults
)
这既冗长又重复,更不用说相当烦人了。在 F# 中,您离这种语法有多近?我现在不介意跳过一些箍(甚至是燃烧的箍!),如果这意味着它会给我一些有用的东西来干掉这样的代码。
【问题讨论】:
-
只是提到匿名类型不是 c# 中的元组有元组类
-
F# 4.6 预览:匿名记录github.com/fsharp/fslang-design/blob/master/FSharp-4.6/…