首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数脚本中的int ->字符串转换?

函数脚本中的int ->字符串转换?
EN

Stack Overflow用户
提问于 2015-02-21 11:51:28
回答 1查看 118关注 0票数 0

我刚刚从Funscript开始,而且我很早就发现了一些错误。

在编写F#时,我通常会将ints转换为如下所示的字符串:

代码语言:javascript
复制
let str = string 123

这使我在运行时出现以下错误:

代码语言:javascript
复制
Ohanterat undantag: System.Exception: Could not compile expression: Call (None, ToString, [Value (123)])
   vid FunScript.InternalCompiler.clo@117-1.Invoke(String message)
   vid Microsoft.FSharp.Core.PrintfImpl.go@523-3[b,c,d](String fmt, Int32 len, FSharpFunc`2 outputChar, FSharpFunc`2 outa, b os, FSharpFunc`2 finalize, FSharpList`1 args, Int32 i)
   vid Microsoft.FSharp.Core.PrintfImpl.run@521[b,c,d](FSharpFunc`2 initialize, String fmt, Int32 len, FSharpList`1 args)
   vid Microsoft.FSharp.Core.PrintfImpl.capture@540[b,c,d](FSharpFunc`2 initialize, String fmt, Int32 len, FSharpList`1 args, Type ty, Int32 i)
   vid <StartupCode$FSharp-Core>.$Reflect.Invoke@720-4.Invoke(T1 inp)
   vid FunScript.CompilerComponent.splitDeclarationFromUsageIfNeeded(ICompiler compiler, FSharpExpr expr)
   vid FunScript.CompilerComponent.makeFriendly@28.Invoke(a expr)
   vid FunScript.LetBindings.binding@9-1.Invoke(FSharpExpr _arg1)
   vid FunScript.CompilerComponent.create@32.FunScript-InternalCompiler-ICompilerComponent-TryCompile(ICompiler compiler, IReturnStrategy returnStategy, FSharpExpr expr)
   vid FunScript.InternalCompiler.Compiler.tryComponent(IReturnStrategy returnStategy, FSharpExpr expr, ICompilerComponent part)
   vid FunScript.InternalCompiler.result@76.Invoke(ICompilerComponent part)
   vid Microsoft.FSharp.Collections.ListModule.TryPick[T,TResult](FSharpFunc`2 chooser, FSharpList`1 list)
   vid FunScript.InternalCompiler.Compiler.tryAllComponents(IReturnStrategy returnStategy, FSharpExpr expr)
   vid FunScript.InternalCompiler.Compiler.compile(IReturnStrategy returnStategy, FSharpExpr expr)
   vid FunScript.ReflectedDefinitions.genMethod(MethodBase mb, MethodBase replacementMi, FSharpList`1 vars, FSharpExpr bodyExpr, FSharpVar var, ICompiler compiler)
   vid FunScript.ReflectedDefinitions.createGlobalMethod@49.Invoke(FSharpVar var)
   vid FunScript.InternalCompiler.Compiler.define(String name, FSharpFunc`2 cons)
   vid FunScript.InternalCompiler.Compiler.FunScript-InternalCompiler-ICompiler-DefineGlobal(String name, FSharpFunc`2 cons)
   vid FunScript.ReflectedDefinitions.createGlobalMethod(String name, ICompiler compiler, MethodBase mb, CallType callType)
   vid FunScript.ReflectedDefinitions.createCall[a](FSharpFunc`2 |Split|, IReturnStrategy returnStategy, ICompiler compiler, IEnumerable`1 exprs, MethodInfo mi)
   vid FunScript.ReflectedDefinitions.methodCalling@209.Invoke(FSharpFunc`2 split, ICompiler compiler, IReturnStrategy returnStategy, FSharpExpr _arg1)
   vid FunScript.CompilerComponent.create@32.FunScript-InternalCompiler-ICompilerComponent-TryCompile(ICompiler compiler, IReturnStrategy returnStategy, FSharpExpr expr)
   vid FunScript.InternalCompiler.Compiler.tryComponent(IReturnStrategy returnStategy, FSharpExpr expr, ICompilerComponent part)
   vid FunScript.InternalCompiler.result@76.Invoke(ICompilerComponent part)
   vid Microsoft.FSharp.Collections.ListModule.TryPick[T,TResult](FSharpFunc`2 chooser, FSharpList`1 list)
   vid FunScript.InternalCompiler.Compiler.tryAllComponents(IReturnStrategy returnStategy, FSharpExpr expr)
   vid FunScript.InternalCompiler.Compiler.compile(IReturnStrategy returnStategy, FSharpExpr expr)
   vid FunScript.Compiler.Compiler.Compile(FSharpExpr expression, FSharpOption`1 components, FSharpOption`1 noReturn, FSharpOption`1 shouldFlattenGenericsForReflection)
   vid <StartupCode$FunScript-Test>.$Program.main@() i C:\Users\Andreas\Desktop\funscript\WebGL\WebGL\Program.fs:rad 42

我知道我可以做123.ToString(),但是我想知道这是没有实现的,还是我应该向Funscript github页面报告的一个bug。

使用VS2013更新4和来自NuGet的最新功能脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-21 17:15:28

这看起来就像FunScript中的一个bug (即缺少一定存在的映射),所以如果您可以在GitHub上提交一个bug报告,那就太好了。(我不知道这里出了什么问题,因为源代码中有string

在任何情况下,FunScript都无法翻译所有内容,而且您总是可以添加提供缺少的功能的自定义函数,因此您可以将类似的内容添加到项目中(直到问题得到解决):

代码语言:javascript
复制
[<JSEmit("return String({0});")>]     // Inline JS code for converting to strings
let string (v:'TAny) : string =       // The function is never executed so we can just
  failwith "JavaScript mapping is never executed"    // throw an exception here!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28645437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档