Мне нужно сделать вызов функции, которая возвращает некоторое значение, которое мне не нужно. Обычно я просто подключу это к ignore
. Но что, если возвращаемое значение - IDisposable
?Каков правильный способ «игнорировать» IDisposable?
Помогает ли оператор ignore
избавиться от переданного аргумента? Из исходного кода этого, похоже, это не делает:
[<CompiledName("Ignore")>]
let inline ignore _ =()
Так что для этой цели, вместо того, чтобы писать use __ = someFunc()
, я использую эту функцию:
let inline dispose (x : #IDisposable) = x.Dispose()
// usage example
someFunc() |> dispose
Интересно, является ли это право способ сделать это или, может быть, уже есть встроенный оператор, подобный этому? Или будет хорошо использовать ignore
?
Я думаю, 'является предпочтительным use' - с' using', 'Dispose' будет называться в конце выражения функции или лямбда; с 'use',' Dispose' будет вызываться в конце блока кода. – andreister
Отлично, 'using x ignore' выглядит хорошо, и он будет обрабатывать исключения правильно. Я изменил бы свою функцию 'dispose' на' let dispose x = using x ignore' вместо этого. – MisterMetaphor
BTW, 'use _ = ...' не будет компилироваться, поскольку одно подчеркивание не будет использоваться как идентификатор. – MisterMetaphor