Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在F#的上下文中理解这个关键字的C#_C#_C# 4.0_F#_Nancy_C# To F# - Fatal编程技术网

在F#的上下文中理解这个关键字的C#

在F#的上下文中理解这个关键字的C#,c#,c#-4.0,f#,nancy,c#-to-f#,C#,C# 4.0,F#,Nancy,C# To F#,我正在和F#试南希。它很酷,但我在F#中找不到一些东西。首先,我将写下这两个代码 这是C语言的代码# 这是F的代码# 如果需要更多详细信息,请告诉我。一些评论: 由于必须在F#中使用Get.[/“],问题在于编译器需要区分访问器和以列表为参数的函数([“/”]=“/”::[]) 对于base问题,我认为您应该使用base而不使用额外的引号。您可能需要将作为self添加到构造函数中才能使用它,但添加双引号会将其添加到变量名中,这并不是您想要的。为了给出具体的代码片段,下面的示例使用作为当前实例的名

我正在和F#试南希。它很酷,但我在F#中找不到一些东西。首先,我将写下这两个代码

这是C语言的代码#

这是F的代码#

如果需要更多详细信息,请告诉我。

一些评论:

由于必须在F#中使用
Get.[/“]
,问题在于编译器需要区分访问器和以列表为参数的函数(
[“/”]=“/”::[]


对于
base
问题,我认为您应该使用
base
而不使用额外的引号。您可能需要将
作为self
添加到构造函数中才能使用它,但添加双引号会将其添加到变量名中,这并不是您想要的。

为了给出具体的代码片段,下面的示例使用
作为当前实例的名称,以便您可以在构造函数中引用它(您可以为引用此
的变量使用任何名称),该变量直接对应于C版本:

键入HomeModule(),如下所示=
继承NancyModule()
执行此操作。获取。[”/“]this.View。[“Index.html”]:>obj

你能给我提供一些代码示例吗?是的,即使是base也转换成了variable,但它工作得很好。谢谢@toman。你能告诉我为什么我必须选择Get.[]而不是直接Get.[]吗。谢谢你的这个技巧。我更简化了代码…@kunjee the F#syntax
等等。[idx]
编译成与C完全相同的IL#语法
blah[idx]
@JackP。我只是想了解这背后的基本原理。否则我不介意把它放进去。当我仅仅因为使用F而杀死行时:)
public class HomeModule : NancyModule
{
    public HomeModule()
    {
        this.Get["/"] = (parameters) => View["Index.html"];
    }
}

public class AboutModule : NancyModule
{
    public AboutModule():base("/about")
    {
        this.Get["/"] = (parameters) => "Hello About";
    }
}
type HomeModule() = 
    inherit NancyModule()
    let get = ``base``.Get
    let view = ``base``.View
    do get.["/"] <- fun parameters -> view.["Index.html"] :> obj

type AboutModule() = 
    inherit NancyModule("/about")
    let get = ``base``.Get
    do get.["/"] <- fun parameters -> "Hello About" :> obj
public class RouteBuilder : IHideObjectMembers
{
    public RouteBuilder(string method, NancyModule parentModule);

    public Func<dynamic, dynamic> this[string path] { set; }
    public Func<dynamic, dynamic> this[string path, Func<NancyContext, bool> condition] { set; }

    protected void AddRoute(string path, Func<NancyContext, bool> condition, Func<dynamic, dynamic> value);
}
type HomeModule() as this = 
  inherit NancyModule()
  do this.Get.["/"] <- fun parameters -> this.View.["Index.html"] :> obj