Yaklaşık 2 saat F # için yeni oldum ve bir Func<DateTime, DateTime, Option<DateTime>, Option<DateTime>>
veya TimeSpan
olabilir ayrımcılıklı bir sendika türü bildirmek için bazı sorun yaşıyorum.Ayırtılı Func ve TimeSpan Birliği C#
namespace Test
open System
type FuncOrTimeSpan =
// Should this be written in a different way to be able to take fun (a, b, c) -> ...?
| Func of Func<DateTime, DateTime, Option<DateTime>, Option<DateTime>>
| TimeSpan of TimeSpan
module ThingDoer
let (|ActiveThing|_|) input = Option.Some(1)
// Do I need to tell this function that I expect it to return FuncOrTimeSpan?
let ReturnEitherFuncOrTimeSpan input =
match input with
| "should return TimeSpan" -> FuncOrTimeSpan.TimeSpan(TimeSpan.FromSeconds(10))
| ActiveThing number -> FuncOrTimeSpan.Func(fun (a, b, c) -> Option.Some(DateTime.Now))
Ben bağırdı alıyorum: Bu fonksiyon çok fazla argüman alır veya işlev beklenmemektedir bir bağlamda kullanılır.
Lambdayı FuncOrTimeSpan.Func
geçirebilmem için ne yapabilirim?
Ayrıca Func of DateTime -> DateTime -> Option<DateTime> -> Option<DateTime>
gibi bir şeye yeniden yazmalı mıyım? Bunun ne anlama geldiğini bilmiyorum ve denediğimde yardımcı olmadı.
Muhtemelen C# 'dan bu işlevle arabirim oluşturmayı planladığımı not etmeliyim (ama belki de arayüzle etkileşime girmesi gereken C# kısmı da F #' ye yeniden yazılacak, böylece birlikte çalışmayı sonlandırmaya yönelik çözümler hala hoş geldiniz).
ActiveThing ile ne yapmaya çalışıyorsunuz? –
'ActiveThing 'tamam, bu sadece oyun cümlesi için aktif bir model, sorun yok. 'ActiveThing' dedim çünkü ismi hatırlayamadım ve bu konuda okuduğum sekmeyi bulamadım.Ayrıca yanlış yazdım, şimdi düzenleniyor. –
@ TomášHübelbauer Orada bir problem var çünkü kısmi aktif modellerin sözdizimi doğru değil. Bkz. Https://msdn.microsoft.com/en-us/library/dd233248.aspx#Anchor_2 – TheInnerLight