BG Development


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

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


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

Мнения: 9349
Регистриран на: 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



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

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



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


--------------------
https://www.rust-lang.org/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 09-07-2019, 09:26
Quote Post


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

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



Кажи, че не разбираш и не цапай темата. Форума не е като да програмираш на Джава и да оставяш л***ата навсякъде.


--------------------
Само аз не троля.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 09-07-2019, 10:18
Quote Post



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

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



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

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

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


--------------------
https://www.rust-lang.org/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
r4nd0m
Публикувано на: 09-07-2019, 17:25
Quote Post



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

Мнения: 1060
Регистриран на: 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



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

Мнения: 2844
Регистриран на: 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/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 09-07-2019, 17:59
Quote Post


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

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



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

Това мнение е било редактирано от SuN на 09-07-2019, 18:00


--------------------
Само аз не троля.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 09-07-2019, 18:08
Quote Post



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

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



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

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


--------------------
https://www.rust-lang.org/
---
" Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
bvbfan
Публикувано на: 09-07-2019, 19:43
Quote Post



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

Мнения: 3314
Регистриран на: 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
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 9349
Регистриран на: 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
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

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

 


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