OOP, mql5'te şablonlar ve makrolar, incelikler ve kullanım teknikleri - sayfa 11

 
TheXpert :

karşılaştırma için dinamik döküm? aklını mı kaçırdın?

Bu durumda çalışma zamanı umurumda değil, türü başka şekillerde tanımlayabilirsiniz, örneğin sanal geçersiz kılınmış bir işlev. Kod, prensibi göstermek için diz üzerine 10 dakikada yazılmıştır ve herhangi bir çalışma seçeneği değildir.

 
Ilya Malev :

Bu CBase'in amacı nedir? Ve neden aynı türden tam olarak 2 değer karşılaştırılmalı?

Evet, CBase burada hiç gerekli değildir. Bunlar tamamen farklı varlıklar olmasına rağmen, bir nedenden dolayı Number'dan miras alınan IComparer'ınız var. Karşılaştırıcı, Number için bir arabirim değildir, iki sayı kabul eden bağımsız bir nesnedir. Buna göre, Karşılaştırıcınız sadece IComparer<T1,T2> olmalı ve herhangi bir Sayı ve CBase içermemelidir.
 
Açıkça, kibirli başka bir govnokoder.
 
Kendini beğenmişlik, birinin bir dala tırmanıp kakasını atmaya başlamasıdır. Çok önemli kaka. Az önce şablon konusunu tartıştığımız bir arkadaşıma (size değil), böyle bir uygulamayı nasıl gördüğümü yazdım.
 
Ilya Malev :

Onlar. anlamsal bir hatanız var. Karşılaştırıcı ve Karşılaştırılabilir kavramları birlikte karıştırılır. Birincisi karşılaştırıcıdır (kendi kendine yeten bir sınıf). İkincisi, karşılaştırılan nesne için bir arayüzdür (yani, bunu başka bir nesneyle karşılaştırır). Burada nesnesi miras alabilir

 
Alexey Navoykov :

Onlar. anlamsal bir hatanız var. Karşılaştırıcı ve Karşılaştırılabilir kavramları birlikte karıştırılır. Birincisi karşılaştırıcıdır (kendi kendine yeten bir sınıf). İkincisi, karşılaştırılan nesne için bir arayüzdür (yani, bunu başka bir nesneyle karşılaştırır).

Sadece Karşılaştırılabilir türden bir Sayıya ve Karşılaştırıcı türünden bir arabirime sahibim ve onlar da bir şekilde keskinlikte orada kurnazca bağlılar. Burada birbirleri aracılığıyla çalışırlar. Oradaki tasarımı birebir kopyalamak gibi bir amaç yoktu diyorum. Burada amaç, karşılaştırılan sınıflardan birinden zorunlu olarak miras alınan şablon tabanlı bir arabirimi nasıl yapabileceğinizi göstermektir. Sende gördüğüm bu mekanizmaydı ve hoşuma gitti.

 
Alexey Navoykov :
Bunlar tamamen farklı varlıklar olmasına rağmen, bir nedenden dolayı Number'dan miras alınan IComparer'ınız var.

Burada temel sınıf nesnesinin türüne göre Number var, yaklaşık olarak, 100 satırda çalışan bir mimari sunmak için yola çıkmadım. Ama orada her şey tek bir ortak atadan miras kalacak

 
Ilya Malev :

Burada birbirleri aracılığıyla çalışırlar.

Ama bu böyle yapılmaz. Birbirinden farklı varlıkları miras alamazsınız. Number, IComparable arabirimini devralabilir ve ayrıca türü için ayrı bir yöntemde bir IComparer döndürebilir.
 
Alexey Navoykov :
Ama bu böyle yapılmaz. Birbirinden farklı varlıkları miras alamazsınız. Number, IComparable arabirimini devralabilir ve ayrıca türü için ayrı bir yöntemde bir IComparer döndürebilir.

Sayı aslında bir sayı değildir, fark ederseniz değer alanı bile yoktur. Ben sadece böyle dedim... Pekala, eğer bir şey işe yararsa, o zaman bunu tartışmayı teklif edeceğim, ama şimdilik, örneğim hiç uymuyorsa, boşver

 
Ilya Malev :

Sayı aslında bir sayı değildir, fark ederseniz değer alanı bile yoktur. Ben sadece böyle dedim ... Pekala, eğer bir şey işe yararsa, o zaman tartışmayı teklif edeceğim, ama şimdilik, örneğim hiç uymazsa, boşver

TAMAM. Ama yine de soyut yöntemler hakkında düşünüyorsunuz. Onlarsız, her şey çok güvenilmez görünüyor.