F# 为let语句定义运算符(绑定)
在F#中,是否可以定义一个操作符,比如(是的,如果处理变量而不是绑定,那么就有可能 例如,对于ref单元格,可以执行以下操作:F# 为let语句定义运算符(绑定),f#,metaprogramming,F#,Metaprogramming,在F#中,是否可以定义一个操作符,比如(是的,如果处理变量而不是绑定,那么就有可能 例如,对于ref单元格,可以执行以下操作: let a = ref 5 let (<<) var value = var := value a << 6 !a // returns 6 设a=ref 5 let(谢谢@Gustavo。如果我传递一个字符串“var”,是否可以实例化它?let(这是另一种情况。您将根据名称对变量进行变异,但名称可能会在运行时丢失。使用反射和引用可能是可
let a = ref 5
let (<<) var value = var := value
a << 6
!a // returns 6
设a=ref 5
let(谢谢@Gustavo。如果我传递一个字符串“var”,是否可以实例化它?let(这是另一种情况。您将根据名称对变量进行变异,但名称可能会在运行时丢失。使用反射和引用可能是可行的。我已接受您在参考号案例中的答案。但我担心引用不容易。来自msdn:例如,对于let绑定,您需要绑定名称的定义和使用绑定的附加表达式。在详细语法中,这是一个在In关键字后面的表达式。在模块的顶层,这只是模块中的下一个表达式,但在引号中,它是显式必需的。“我同意,这并不容易。而且你会失去类型安全性,因为编译器不再知道你要给哪个变量赋值,所以也不知道要检查哪个类型。Gustavo,一个有趣的计划是在github上编写Yaaf.FSharp.Scripting,它可以使用以下语法让赋值成为可能:fsiSession.let“test”你听说过吗?
let a = ref 5
let (<<) var value = var := value
a << 6
!a // returns 6