F#:使用括号和不使用括号定义的类型之间的差异
F#中的F#:使用括号和不使用括号定义的类型之间的差异,f#,F#,F#中的type Something()和type Something有什么区别 works中引用此代码段的原因: 开放系统 打开Microsoft.AspNetCore.Hosting 打开Microsoft.AspNetCore.Builder 打开Microsoft.AspNetCore.Hosting 打开Microsoft.AspNetCore.Http 键入Startup()= 配置(应用程序:IAApplicationBuilder)= app.Run(fun context->c
type Something()
和type Something
有什么区别
works中引用此代码段的原因:
开放系统
打开Microsoft.AspNetCore.Hosting
打开Microsoft.AspNetCore.Builder
打开Microsoft.AspNetCore.Hosting
打开Microsoft.AspNetCore.Http
键入Startup()=
配置(应用程序:IAApplicationBuilder)=
app.Run(fun context->context.Response.WriteAsync(“来自ASP.NET核心的你好!”)
[]
让主argv=
让host=WebHostBuilder().UseKestrel().UseStartup().Build()
host.Run()
printfn“服务器已完成!”
0
但这失败了:
open System
open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Http
type Startup =
member this.Configure(app: IApplicationBuilder) =
app.Run(fun context -> context.Response.WriteAsync("Hello from ASP.NET Core!"))
[<EntryPoint>]
let main argv =
let host = WebHostBuilder().UseKestrel().UseStartup<Startup>().Build()
host.Run()
printfn "Server finished!"
0
开放系统
打开Microsoft.AspNetCore.Hosting
打开Microsoft.AspNetCore.Builder
打开Microsoft.AspNetCore.Hosting
打开Microsoft.AspNetCore.Http
类型启动=
配置(应用程序:IAApplicationBuilder)=
app.Run(fun context->context.Response.WriteAsync(“来自ASP.NET核心的你好!”)
[]
让主argv=
让host=WebHostBuilder().UseKestrel().UseStartup().Build()
host.Run()
printfn“服务器已完成!”
0
您可以通过在F#Interactive(交互式)对话框中键入它来查看差异:
type Parens() =
member this.add10 x = x + 10
type NoParens =
member this.add10 x = x + 10;;
输出:
type Parens =
class
new : unit -> Parens
member add10 : x:int -> int
end
type NoParens =
class
member add10 : x:int -> int
end
第二个类没有定义构造函数。编译器不应该允许的东西,但出于某种原因确实允许。它不会生成像C#这样的自动构造函数
有关更多信息,请查看和上的F#For fun and price页面。也看看这个
如果有疑问,请打开F#interactive,键入您希望看到两者之间差异的两个内容,然后比较输出,以供将来参考。这是一个功能强大的工具,您应该使用它。不同的类型都是通过F#中的
type
关键字定义的,包括类型别名、DU、记录、类等。不同的参数将指示您创建的类型。
type Parens =
class
new : unit -> Parens
member add10 : x:int -> int
end
type NoParens =
class
member add10 : x:int -> int
end