Реализация nameof
имеет оператор в ядре F #, но биты компилятора F # 5 еще не отправлены. Когда это произойдет, вы можете использовать его, чтобы получить имя символа.
let someVar1 = None
let name = nameof someVar1 // name = "someVar1"
На данный момент мы можем, возможно, использовать оператор динамического c, чтобы получить нам прокладку, которую вы в конечном итоге сможете заменить на nameof
let name = ()
let (?) _ name = string name
Использование:
let someVar1 = None
let name = name?someVar1
Это не слишком плохо читается, и вы получаете некоторую степень автозаполнения.
Если вы действительно хотите чтобы иметь возможность получить локальное имя и значение на сайте вызова, есть цитаты.
let printVar = function
| ValueWithName(value, _type, name) -> printfn "%s = %A" name value
| _ -> ()
Хотя использование немного шумное.
let someVar1 = 12
printVar <@ someVar1 @> //prints someVar1 = 12