2016-04-08 23 views

cevap

3

Bunu yapmak için doğrudan bir yol yoktur sanmıyorum, ama hoş bir çözümü vardır:

// Define a mutable variable with default value 
fsiSession.EvalInteraction "let mutable myVar = Unchecked.defaultof<int>" 

// Create a function that sets the value of the variable 
let f = evalExpressionTyped<int -> unit> "fun x -> myVar <- x" 

// Run the function to set the value of `myVar` to whatever we want 
f 42 

// As a bonus, use variable shadowing to make it immutable 
fsiSession.EvalInteraction "let myVar = myVar" 

Bu FCS belgelerinden evalExpressionTyped yardımcı kullanır.

+0

İlkel olmayan türde bir ana bilgisayar nesnesini komut dosyasına iletmenin bir yolunu umuyordum. Her ne kadar daha iyi bir şey "açılır" olmasa da, söz konusu soruya teknik olarak cevap verdiğinden bu cevabı kabul edeceğim. Fikir: Her zaman bir dize kullanabilir ve nesnesinin dize durumunun yüklenmesine izin verebilirim. Yine de farklı bir nesne referansı olacak. – RoyalPotato

+0

Harika bir çözüm. Ama bunu doğrudan yapamamanın en önemli nedeni nedir? – FZed

+0

@RoyalPotato İlkel olmayan türleri sağlamak için bunu kullanabilirsiniz. Türün geldiği montajı yüklemek için ilk önce # r'nin etkileşimini değerlendirmeniz gerekir. –

İlgili konular