如果你评估{} + 1得到1,但是如果你将相同的表达式赋给变量,比如说x = {} + 1变量将保存一个字符串"[object Object]1".
为什么赋值会改变右侧表达式的语义?右手边的表达不应该是"无背景的"吗?
我遇到的问题是CompilerParameters在运行时找不到传递给它的三个引用的assmeblies(System.dll,FSharp.Core.dll,FSharp.Powerpack.dll).我得到的错误是:
unknown-file(0,0):错误0:错误FS0218:无法读取程序集'c:\ user s\utente\documents\visual studio 2010\Projects\TrashSolution\TrashSolution\bin\D ebug\FSharp.Core.dll "
如何告诉编译器在GAC中搜索这些程序集,而不是项目的bin目录?如果我在作为字符串提供的代码中打开命名空间,我如何知道要添加哪些程序集?我在哪里可以获得这些信息?
我想格式化一个System.String.Format有5个重载的字符串:
String String.Format(String format , Object arg0 )
String String.Format(String format , Object arg0 , Object arg1 )
String String.Format(String format , Object arg0 , Object arg1 , Object arg2 )
String String.Format(String format , params Object[] args )
String String.Format(IFormatProvider provider , String format , params Object[] args )
Run Code Online (Sandbox Code Playgroud)
我想使用第四个重载(采用一组对象的重载),如下所示:
let frm = "{0} - {1}"
let args = [| 1; 2 |]
System.String.Format(frm, args)
Run Code Online (Sandbox Code Playgroud)
问题是args参数被解释为一个Object,因此调用了第一个重载.所以我正确地得到以下错误:
System.FormatException: Index (zero based) must be greater than or equal to …Run Code Online (Sandbox Code Playgroud)