【发布时间】:2011-08-13 02:40:45
【问题描述】:
我have read 认为 F# 足够聪明,可以将方法的参数转换为元组。例如:
let isInt s =
match System.Int32.TryParse(s) with
| (false, _) -> false
| (true, _) -> true
我想创建一个具有唯一系统范围名称的新互斥锁。有一个带有 3 个参数的构造函数:
new:
initiallyOwned:bool *
name:string *
createdNew:bool byref -> Mutex
最后一个参数是out参数,F#应该能够将构造函数调用结果转换为元组。 然而,以下代码看起来无法编译并出现错误“此表达式应具有 Mutex 类型,但此处具有类型 'a * 'b”
open System.Threading
let rec CreateUniqueMutex i =
match new Mutex(false, i.ToString()) with
| (_, false) -> CreateUniqueMutex (i+1) // Error here
| (mutex, true) -> mutex
和第一个isInt方法有什么区别?
我的代码可以修复吗?
最适合我的任务的代码是什么?
【问题讨论】:
标签: f# pattern-matching