F # içinde tanımlı bir sınıfın yeni bir örneğini oluşturmak için bir tuple kullanmayı denedim. Sorunu çoğaltmak için aşağıdaki kodu denedim.F # constructor, tuplleri kabul etmiyor mu?
type test(x: int, y:int) =
let distance =
x * x + y * y |> float |> sqrt
new (x: int, y:int, z:int) =
new test(x, y)
let args = 1, 2
let test2 = new test(args)
Bu
hata 1 elemanı ya da şantiye 'test' nesne 1 bağımsız değişken (ler) almaz şikayet etmektedir. Bir aşırı yüklenme 2 argüman alarak bulundu.
Varsayılan olmayan yapıcıyı kaldırırsam, işler iyi olur. Neden tuples yerine iki/üç argüman haline geldiğini anlamıyorum.
Çok teşekkür ederim.
Derleyicinin yapıyı iyileştirmediğine şaşırmadım ya da bu durumda bir tuple olarak argüman, ama ben yapıcı bağlanma örüntülerini kullanamazsınız oldukça şaşırdım yani 'tür Test ((x, y)) = ...' (ya da başka desen). Bunun için bir sebep var mı? –
İyi soru, bilmiyorum. – Brian
Çok teşekkürler. F #, bazı yönlerden gerçekten kafa karıştırıcı. – LLS