用ML语言
假设a’ * a’ * int
是一个函数。举一个f的定义的例子,它会使f的参数具有类型:fun f1 (x,y,z) = z<5 ;
val f1 = fn : 'a * 'b * int -> bool
。
示例代码
a’ * a’ * int -> bool
我如何将此val更改为private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly IEmailSender _emailSender;
public AccountController(UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
IEmailSender emailSender)
{
_userManager = userManager;
_signInManager = signInManager;
_emailSender = emailSender;
}
??
答案 0 :(得分:1)
类型:
a’ * a’ * int -> bool
表示该函数有三个参数,第一个是'a type,第二个也是'a type,第三个是int类型。
您的定义:
fun f1 (x,y,z) = z<5 ;
是正确的,因为它需要一个元组,现在为了限制x,y的类型你可以写的相等:
fun f1 (x :'a ,y :'a ,z) = z<5 ;
答案 1 :(得分:1)
如果要避免显式类型注释,使x
和y
成为相同类型的最简单方法是从函数中返回它们,但在不同情况下。
现实世界的例子:
- fun f (x,y,z) = if z < 0 then x else y;
val f = fn : 'a * 'a * int -> 'a
(由于问题描述中未提及bool
结果类型,我假设它只是您返回z < 5
的结果,而不是最初的问题。)