F # örneğin isteğe bağlı parametresi tarafından sadece farklı olmasına fonksiyonları aşırı sağlar?isteğe bağlı parametreleri ile f # aşırı fonksiyonları arasında ayrım
cevap
İki aşırı yüklenme işlevi yalnızca isteğe bağlı bir parametre ile farklılık gösteriyorsa, ilk işlevi çağırmanın mantıklı bir yolu olduğunu sanmıyorum. Yorumlarda belirtildiği gibi, bunu kullanmak muhtemelen zayıf bir tasarımdır ve parametreleri yeniden adlandırmalısınız.
hata FS0041: yöntemle 'fonk' could için benzersiz aşırı Eğer
muhtemelen fark gibiMyClass().func("A","B")
kullanarak sıradan bir şekilde işlevini çağırarak çalıştığınızda, sen belirsizlik şikayet bir hata mesajı Bu program noktasından önce tip bilgisine göre belirlenemez. Bir tip açıklama gerekli olabilir. Adaylar: Üye MyClass.func: a: string * b:? Dize -> dize, üye MyClass.func: a: string * b: dize -> dize
iki şekilde açıkça ikinci aşırı çağırabilir açıkça isteğe bağlı argüman için Some
değer sağlayabilir olması sayesinde (?b
olan veya olmayan): meraktan
MyClass().func("A")
MyClass().func("A",?b=Some "B")
, bu statik üye kısıtlaması yoluyla ilk aşırı çağırabilir çıkıyor. Bu oldukça çirkin ve muhtemelen bu yapmamalısın, ama ilk aşırı çağırır:
let inline callFunc (o:^T) a b =
(^T : (member func : string * string -> string) (o, a, b))
callFunc (MyClass()) "A" "B"
sadece herhangi işlevinde ikinci parametreyi yeniden adlandırabilirsiniz
- 1. FindBy sihirbaz fonksiyonlarını, $ alanları ile isteğe bağlı parametreleri nasıl kullanırım?
- 2. Opsiyonel Python fonksiyonları parametreleri ve standart değerleri
- 3. İsteğe Bağlı Parametreyle Yöntem Aşırı Yüklemesi
- 4. Elixir Phoenix'te isteğe bağlı POST parametreleri
- 5. İsteğe bağlı sorgu parametreleri (varsayılan değerle) componentjure-api ile
- 6. F #: Aşırı yükleme işlevleri
- 7. isteğe bağlı parametreler proc?
- 8. initializer_list ile isteğe bağlı yapıcı
- 9. Bu bir C# 4.0 derleyici isteğe bağlı parametreleri hata mı?
- 10. İsteğe bağlı parametreleri WCF hizmet yönteminde kullanabilir misiniz?
- 11. İsteğe bağlı rota parametreleri Backbone.js içinde mi? (tekrar)
- 12. VB işlevinde isteğe bağlı parametreler/varsayılan değer parametreleri nasıl eklenir?
- 13. C# bu parametreler isteğe bağlı
- 14. Hızlı isteğe bağlı bağlantıya sahip isteğe bağlı birleştirme hala
- 15. Raylar, isteğe bağlı parametreler
- 16. İsteğe bağlı özellik
- 17. Ninj. İsteğe Bağlı Enjeksiyon
- 18. NoUIslider - İsteğe bağlı güncelleştirme aralığı
- 19. F arasında sıralama sıralama F #
- 20. Salatalıkta isteğe bağlı parametre
- 21. wsdl modundaki PHP SoapClient sınıfı ile isteğe bağlı parametreler
- 22. subprocess.Popen isteğe bağlı bağımsız değişkenler
- 23. javascript fonksiyonları isteğe bağlı parametreleri test etmek için <code>typeof foo !== 'undefined'</code> kullandık
- 24. Swift 2.2 isteğe bağlı/isteğe bağlı istekleri keser
- 25. Raylar İsteğe bağlı parametreler ile arayın?
- 26. İsteğe bağlı tuşları ile desen eşleştirme haritası
- 27. Aeson - Haskell ile isteğe bağlı JSON anahtarları
- 28. İsteğe bağlı (nil)
- 29. İsteğe Bağlı PORTlar?
- 30. Verilen isteğe bağlı koleksiyon
: 'Sınıfım türünde() = üye this.func (a : string, b: string) = "func (a, b)" üye this.func (a: string,? c: string) = "func (a,? c)" let test = MyClass() let ARG1 = "2" = "12" test.func (ARG1, b = arg2) arg2 izin |> printfn "%" s // fonk (a, b) test.func (arg1, c = arg2) |> printfn "% s" // func (a,? c) ' –