Вопросы с тегом «traits»

В компьютерном программировании черта - это набор методов, используемых в качестве «простой концептуальной модели для структурирования объектно-ориентированных программ».

387
В чем разница между типами self и подклассами черт?

Тип личности для черты A: trait B trait A { this: B => } говорит, что « Aнельзя смешивать в конкретный класс, который также не расширяется B» . С другой стороны, следующее: trait B trait A extends B говорит, что "любой (конкретный или абстрактный) класс, смешивающийся в, Aбудет также смешиваться...

370
Как переопределить функцию trait и вызвать ее из переопределенной функции?

Сценарий: trait A { function calc($v) { return $v+1; } } class MyClass { use A; function calc($v) { $v++; return A::calc($v); } } print (new MyClass())->calc(2); // should print 4 Этот код не работает, и я не могу найти способ вызвать функцию черты, как она была унаследована. Я пыталась...

346
Черты против интерфейсов

В последнее время я пытался изучать PHP и обнаружил, что зацикливаюсь на особенностях. Я понимаю концепцию горизонтального повторного использования кода и не хочу обязательно наследовать от абстрактного класса. Что я не понимаю, так это то, в чем заключается принципиальное отличие использования...

332
Что такое запечатанная черта?

Запечатанные классы описаны в «Программирование в Scala», но запечатанные черты - нет. Где я могу найти больше информации о запечатанном признаке? Я хотел бы знать, является ли запечатанная черта такой же, как у запечатанного класса? Или, если нет, в чем различия? Когда стоит использовать...

148
Черты в PHP - какие-либо реальные примеры / лучшие практики? [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...

135
Можно ли выяснить тип параметра и тип возврата лямбда?

Учитывая лямбду, возможно ли выяснить ее тип параметра и тип возвращаемого значения? Если да, то как? В принципе, я хочу, lambda_traitsкоторый может быть использован следующими способами: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should...

116
Методы по умолчанию в Java 8 как признаки: безопасно?

Безопасно ли использовать методы по умолчанию в качестве плохой версии трейтов в Java 8? Некоторые утверждают, что это может расстроить панд, если вы используете их только ради этого, потому что это круто, но это не мое намерение. Также часто напоминают, что методы по умолчанию были введены для...

92
Почему std :: is_pod устарел в C ++ 20?

std::is_podвероятно, будет устаревшим в C ++ 20. В чем причина такого выбора? Что мне следует использовать вместо того, std::is_podчтобы знать, действительно ли тип является POD?...

90
Когда использовать val или def в трейтах Scala?

Я просматривал эффективные слайды scala, и на слайде 10 упоминается, что никогда не следует использовать valв a traitдля абстрактных элементов и использовать defвместо этого. На слайде не упоминается подробно, почему использование аннотации valв a traitявляется анти-шаблоном. Я был бы признателен,...

84
В чем смысл черт характера STL?

Я заметил, что в моей копии справочника SGI STL есть страница о характеристиках характера, но я не вижу, как они используются? Заменяют ли они функции string.h? Кажется, что они не используются std::string, например, length()метод on std::stringне использует length()метод черт характера . Почему...

83
Почему PHP Trait не может реализовывать интерфейсы?

Мне интересно, почему PHP Trait (PHP 5.4) не может реализовывать интерфейсы. Обновление от user1460043 answer => ... не может требовать класс, который использует его для реализации определенного интерфейса Я понимаю, что это могло быть очевидным, потому что люди могли подумать, что если a Class...

13
Почему `std :: mem :: drop` не совпадает с замыканием | _ | () в границах черт с более высоким рейтингом?

Реализация std::mem::dropзадокументирована следующим образом: pub fn drop<T>(_x: T) { } Таким образом, я ожидаю, что укупорка |_| ()(в просторечии известная как унитаз ) будет потенциальной заменой 1: 1 dropв обоих направлениях. Тем не менее, приведенный ниже код показывает, что dropон не...

11
Почему метод, возвращающий Unit, может быть переопределен методом, возвращающим String, если типы возврата не указаны явно?

Я работал над примерами кода из главы «Особенности в программировании в Scala Edition1» https://www.artima.com/pins1ed/traits.html и наткнулся на странное поведение из-за моей опечатки. Несмотря на то, что переопределенный метод признака ниже фрагмента кода не дает никакой ошибки компиляции, хотя...