BG Development


Страници: (2) 1 [2]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Как да се преобразува масив от типове в Еф-остро?
SuN
Публикувано на: 09-07-2019, 20:25
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8774
Регистриран на: 27.01.05



Не ми харесва, че няма автоматично преобразуване на типа нагоре по йерархията, но и това ще ми свърши работа.

CODE

[<AbstractClass>]
type Base1 () =
   abstract member A : unit -> unit

type Derived1 () =
   inherit Base1 ()

   override this.A() = printfn "HI!"

// loop accepts an array with generic type
let loop (ar : 'a[]) : unit =
   for x in ar do
       // box x - цената, която трябва да се плати за неидеалното решение
       match box x with
       | :? Base1 as o -> o.A()
       | _ -> failwith "Unexpected object"

[<EntryPoint>]
let main args =
   let d = Derived1 ()
   let dd = [|d;d;d;d;d|]
   loop dd
   0


Това мнение е било редактирано от SuN на 09-07-2019, 20:27
PMEmail Poster
Top
r4nd0m
Публикувано на: 10-07-2019, 16:36
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1047
Регистриран на: 05.09.07



QUOTE (Gamma Goblin @ 09-07-2019, 17:43)
За какво са ти масиви от примитиви ? Такива неща не се ползват.

Иначе не - в случая който описваш си ползваш масивчета, но проблем няма, защото не пука за типа. Ако искаш да вкараш типове, нещата стават грозни с масиви, но тогава вече не са примитиви, така че не ползваш масиви.

Е как така? array от bytes? например за един image?


--------------------
"Happiness only real when shared."
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 10-07-2019, 17:16
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2489
Регистриран на: 21.02.18



QUOTE (r4nd0m @ 10-07-2019, 16:36)
QUOTE (Gamma Goblin @ 09-07-2019, 17:43)
За какво са ти масиви от примитиви ? Такива неща не се ползват.

Иначе не - в случая който описваш си ползваш масивчета,  но проблем няма, защото не пука за типа. Ако искаш да вкараш типове, нещата стават грозни с масиви, но тогава вече не са примитиви, така че не ползваш масиви.

Е как така? array от bytes? например за един image?

И какво ще ги правиш тея байтове ? Като е картинка си има клас BufferedImage, който ти съдържа декодиранта картинка и да дава апита с които да работиш.


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0