Size: a a a

2020 July 27

SP

Sergey Protko in PHP
"параметризованные типы" а ты предлагаешь конкретные типы
источник

АГ

Алексей Гевондян... in PHP
дженерики в том смсыле, в каком они есть, .. ну я их использовал на плюсах, не слишком активно. мне не нравятся они. по сути, нужно только научиться объявлять массивы типов как тип... вот это правда нужно.
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
то есть ты не знаешь что такое дженерики
Ну вообще меня вот этот конкретный пример тоже немного вводит в ступор.
источник

АГ

Алексей Гевондян... in PHP
не понимаю, зачем параметризация типа... в компилируемых языках понятно. но в пыхе то можно интерфейс объявить же...
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
Ну вообще меня вот этот конкретный пример тоже немного вводит в ступор.
что именно?
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
что именно?
Именно вот такое объявление функции.
источник

SP

Sergey Protko in PHP
interface NormalizerInterface<T, R>
{
   
   public function normalize(T $object, $format = null, array $context = []): R;

   public function supportsNormalization(mixed $data, $format = null): bool;
}
источник

A

Aleksandr Khristenko in PHP
Два генерик параметра, один в аргументе второй в ретурне, друг с другом никак не связаны.
источник

SP

Sergey Protko in PHP
вот пример из симфони где мне нужны дженерики
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
interface NormalizerInterface<T, R>
{
   
   public function normalize(T $object, $format = null, array $context = []): R;

   public function supportsNormalization(mixed $data, $format = null): bool;
}
Ну, ты же понимаешь что это совершенно другое, нежели ты привел выше. Тут генерик параметры на уровне класса а в примере выше на уровне функции. Совершенно разная семантика.
источник

АГ

Алексей Гевондян... in PHP
зачем array<string, SomeClass> когда можно просто SomeClass[] либо, для ассоциативных массивов, что-нибудь конечно надо бы придумать, чтобы отличать ассоциативные от обычных массивов... вот этот ужасный устоявшийся синтаксис с угловыми скобками конечно годится, но как-то... усложняет понимание и несколько избыточен, имхо.
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
Два генерик параметра, один в аргументе второй в ретурне, друг с другом никак не связаны.
то что они в сигнатуре метода тебя не смущает? что значит не связаны?
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
Ну, ты же понимаешь что это совершенно другое, нежели ты привел выше. Тут генерик параметры на уровне класса а в примере выше на уровне функции. Совершенно разная семантика.
ну для тайпскрипта я бы всеравно определял подобный тип трансформации... даже на уровне функции...
источник

АГ

Алексей Гевондян... in PHP
Sergey Protko
interface NormalizerInterface<T, R>
{
   
   public function normalize(T $object, $format = null, array $context = []): R;

   public function supportsNormalization(mixed $data, $format = null): bool;
}
почему в этом примере нельзя ввести еще пару интерфейсов?
источник

SP

Sergey Protko in PHP
Алексей Гевондян
почему в этом примере нельзя ввести еще пару интерфейсов?
потому что интерфейс не твой?
источник

SP

Sergey Protko in PHP
симфони же
источник

АГ

Алексей Гевондян... in PHP
Normalizable / Normalized...
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
то что они в сигнатуре метода тебя не смущает? что значит не связаны?
class<T> { function id(T):T } и class { function<T>id(T): T } совершенно разные вещи
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
class<T> { function id(T):T } и class { function<T>id(T): T } совершенно разные вещи
у тебя есть функция которая принимает на вход T и возвращает R. что не так?
источник

SP

Sergey Protko in PHP
Алексей Гевондян
Normalizable / Normalized...
что?
источник