BG Development


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

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


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

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



Масива съдържа обекти наследници, а ми се иска да го подам на нормална
функция, която да приема масив от базовия тип.

В момента правя нещата така:

CODE
let slice (ar : Deriv1[]) id = ...


Deriv1 наследява от Base1 и имплементира абстрактната функция GetId();

Не мога обаче да извикам функцията така:

CODE
let slice (ar : Base1[]) id =...;
let ar : Deriv1[] = ...;
slice ar 42;


Идеи?

А също - нормално ли е за 100 реда код да чакам 10 секунди компилация под линукс? icon_smile.gif
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 09-07-2019, 06:35
Quote Post



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

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



не е нормално, най-добре отиди да се прегледаш


--------------------
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
SuN
Публикувано на: 09-07-2019, 09:26
Quote Post


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

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



Кажи, че не разбираш и не цапай темата. Форума не е като да програмираш на Джава и да оставяш л***ата навсякъде.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 09-07-2019, 10:18
Quote Post



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

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



Е нямаш ли .map() ? Даже в джавата го има ?

А относно цапането - в джавата всеки знае че не е яко да се ползват масиви.

Това мнение е било редактирано от Gamma Goblin на 09-07-2019, 10:20


--------------------
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
r4nd0m
Публикувано на: 09-07-2019, 17:25
Quote Post



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

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



QUOTE (Gamma Goblin @ 09-07-2019, 10:18)
А относно цапането - в джавата всеки знае че не е яко да се ползват масиви.

Относно масивите в Java... за да не използваш масиви би трябвало да аутобоксваш примитивите нали?


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



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

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



QUOTE (r4nd0m @ 09-07-2019, 17:25)
QUOTE (Gamma Goblin @ 09-07-2019, 10:18)
А относно цапането - в джавата всеки знае че не е яко да се ползват масиви.

Относно масивите в Java... за да не използваш масиви би трябвало да аутобоксваш примитивите нали?

За какво са ти масиви от примитиви ? Такива неща не се ползват.

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

Това мнение е било редактирано от Gamma Goblin на 09-07-2019, 17:46


--------------------
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
SuN
Публикувано на: 09-07-2019, 17:59
Quote Post


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

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



Да не са ти обещали 72 девственици след смъртта, ако не ползваш масиви от обекти в Джава? Каква е далаверата?

Това мнение е било редактирано от SuN на 09-07-2019, 18:00
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 09-07-2019, 18:08
Quote Post



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

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



QUOTE (SuN @ 09-07-2019, 17:59)
Да не са ти обещали 72 девственици след смъртта, ако не ползваш масиви от обекти в Джава? Каква е далаверата?

дървени са, по-добре е да ползваш ArrayList което пак е масив отдолу, но има супер много полезни методи, докато масива няма нищо


--------------------
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
bvbfan
Публикувано на: 09-07-2019, 19:43
Quote Post



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

Мнения: 3216
Регистриран на: 08.12.13



Във функционален език за програмиране не се ползва полиморфизъм
https://stackoverflow.com/questions/4969593...nal-programming


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
SuN
Публикувано на: 09-07-2019, 20:12
Quote Post


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

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



Някакъв твой аргумент имаш ли да добавиш, защото отговора с най-много гласове на адреса, който си дал твърди обратното:

QUOTE
If virtual method dispatch is the way you want to approach the problem, this is a perfectly reasonable approach.
...
And as for your feeling that you're simulating a virtual function, I would argue that it's not a simulation at all. It IS a virtual function table, and that's perfectly OK.


Пък и имам чувството, че нещо си подминал смисъла на ООП. Ето ти дъвка за ума, докато напиша решението, което открих днес:

CODE

(defun make-object ()
 (lexical-let (internal-value
               derived-slot);; unused at the moment
   (lambda (args)
     (lexical-let ((call (car args)))
       (cond ((eq call 'get) internal-value)
             ((eq call 'set) (setq internal-value (cadr args)))
             (t (error "Unexpected call %s" (car args))))))))

(let ((a (make-object)))
 (funcall a '(set 42))
 (funcall a '(get)))
;; we get 42


Сега си представи, че лесно мога да добавя в derived-slot следващ обект и да направя така, че функциите (съобщенията) 'get и 'set да правят нещо допълнително. Даже мога да си направя макрос setOOP за моя тип, което да превежда:

CODE
(setOOP a 42)

в
CODE
(funcall a '(set 42))


Това мнение е било редактирано от SuN на 09-07-2019, 20:14
PMEmail Poster
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