我想做一些像这样的事情:
let x = 5
let y = 10
let expr = Console.ReadLine()
expr
Run Code Online (Sandbox Code Playgroud)
可以"x+y"在控制台中输入以存储在expr中的位置.
如何在F#中评估这样的声明?
最终,我希望用户能够在网页上输入表达式或系统规则,并将它们保存在数据库中,以便在适当的时间在F#库中应用.我只是不知道如何将输入的字符串转换为F#中的函数值.
感谢您提供的任何帮助!
亚当
小智 5
我刚刚看到 Joh 在他的F# 游戏开发页面上使用了报价评估
open Microsoft.FSharp.Linq.QuotationEvaluation
...
let mk_gravity scale_func (up: 'Vec): 'Vec =
let q = <@ let (*) = %scale_func in -9.81 * up @>
q.Eval()
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在进行简单的数学计算,您可以从他的 codeplex plage - Symbolic Differentiation in C#/F#下载 Edmonodo 的表达式解析器和评估器
祝你好运 - Ji?í
如前所述,F# 没有 eval,但如果您可以定义语法,则可以利用 F# 中的 Lex 和 Yacc 实现(fslex 和 fsyacc)。
编辑:
作为快速跟进,我知道在 ocaml 中,您可以使用ocamlmktop. 我不确定 F# 中是否有等效项。不过,这似乎与您想要的网络界面不符(对吗?)。
| 归档时间: |
|
| 查看次数: |
4244 次 |
| 最近记录: |