私はスクリプトとしてherokuにF#アプリを導入しています。私は非常に奇妙な問題を抱えています。私は例の以下のエラーは以下に示す取得しますが、いないよ、他:なぜ、配列のレコードが英雄の型初期化エラーを引き起こすのですか?
System.TypeLoadException:ロードできませんでした型「FSI_0007 +テスト[]」 アセンブリ「FSI-ASSEMBLY、バージョンから= 0.0 .0.0、Culture =ニュートラル、 PublicKeyToken = null '。 (ラッパーで管理されるネイティブ)(System.Reflection.MonoMethod、object、object []、System.Exception &)、 System.Reflection.MonoMethod.Invoke(System.Object obj 、のBindingFlags invokeAttr、System.Reflection.Binderバインダー、System.Objectの[] パラメータ、可能System.Globalization.CultureInfo培養)< 0x410a5830 + 0x000b7>:0
エラーケース:
type Test = { Test: string }
printfn "%A" [|{Test = "test"}|] <--- error here
の作業例:
printfn "%A" [|"test"|]
type Test = { Test: string }
printfn "%A" {Test = "test"}
printfn "%A" [{Test = "test"}]
だから、私は、配列内のレコードを置くことができないように見えますが、私は、配列内の任意の組み込み型を置くことができます。また、レコードをリストに入れることもできます。そして、それだけで記録は大丈夫です。
レコードと配列の組み合わせでエラーが発生するのはなぜですか?
私はここbuildpackを使用しています:モノ4.4.2.11使用 https://github.com/SuaveIO/mono-script-buildpack
。
ビジュアルスタジオではローカルfsiでは発生しません。
バグのようです。リテラルを記録するだけですか?つまり、レコードをバインドできるようにして、配列要素のバインドを使用できますか? – scrwtp
また、配列開始演算子 '[|'とレコード開始演算子 '{'?との間にスペースを入れるとどうなりますか?何かが3つの文字 '[{{{'が2つのトークンではなく1つのトークンとして間違って解析されているかもしれません。もしそうなら、 '[| {...} |] 'は解析のバグを回避する必要があります。 – rmunn
@rmunnこのエラーは英雄でのみ発生します。 – mydogisbox