Мне нужно назначить параметр byref, но, используя F # 4.0 и .NET 4.5.2 в окне Windows 8x64, я продолжаю получать жалобы, что This value is not mutable.
я не могу изменить подпись, потому что я реализующий COM-интерфейс. Минимальный сломанный пример:F # byref param not mutable
module Utils =
let bugFix1([<System.Runtime.InteropServices.Out>] ID : System.String byref) = ID <- "Hi!"
let bugFix1([<System.Runtime.InteropServices.Out>] ID : int byref) = ID <- 0
let bugFix1([<System.Runtime.InteropServices.Out>] ID : System.Guid byref) = ID <- System.Guid.NewGuid()
По this value
, это определенно означает ID
, потому что это не имеет значения, что я назначить ID
. Также обратите внимание, что не имеет значения, является ли тип blittable или нет, или выделено ли оно или в виде стека.
Есть ли способ заявить ID
как mutable
?
возможно дубликат или, по крайней мере, аналогичный http://stackoverflow.com/questions/946338/f-how-do-i-declare-and-use-byref-semantics-on-parameters –
Что вы используете для версии F # ? –
@FyodorSoikin Хорошая точка - 4.0. Я редактировал вопрос, чтобы включить это. –