Вопросы по теме 'traits'

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

Перестроение лениво созданного атрибута при изменении базового атрибута в Moose
У меня есть класс Moose с атрибутом lazy_build . Значение этого атрибута является функцией другого (неленивого) атрибута. Предположим, кто-то создает экземпляр класса со значением 42 для требуемого атрибута. Затем они запрашивают ленивый...
807 просмотров
schedule 22.05.2023

Свойства параметра шаблона C++ boost
Кажется, я видел макрос в boost, который восстанавливает параметры шаблона шаблона, например: template<class> struct parameters; #define parameters(T) template<class A> \ struct parameters<T<A> > { typedef A...
693 просмотров
schedule 04.09.2022

Разрешено ли использование конструктора с классами case?
У меня есть класс case (назовем его Stuff ), для которого я хочу иметь возможность создавать анонимные подклассы во время выполнения, расширяя признак (назовем его Marker ). Вот фрагмент сеанса REPL, иллюстрирующий то, что я пытаюсь сделать:...
221 просмотров
schedule 29.11.2022

Проблема при определении трейта ведения журнала в scala
Похоже, что общий шаблон ведения журнала в scala заключается в использовании трейта ведения журнала, который смешан с конкретным классом (см. Проекты с открытым исходным кодом, такие как Liftweb, akka, ...). Что-то такое: trait Logging { val...
2703 просмотров
schedule 23.02.2023

Почему трейты Scala на самом деле не трейты?
Кто-то недавно сказал мне, что трейты Scala не являются "настоящими" трейтами, а на самом деле это просто примеси. К сожалению, у меня не было возможности спросить его, почему. Кто-нибудь знает, что он имел в виду? Правка: В качестве...
1778 просмотров
schedule 19.02.2023

В чем причина этой головной боли при разрешении перегрузок?
У меня есть программа, в которой много вложенных операторов if/switch, которые повторяются в нескольких местах. Я попытался извлечь это и поместить переключатели в класс метода шаблона, а затем разрешить клиентам перегружать ветки переключателей,...
432 просмотров

Как объявить черты как принимающие неявные параметры конструктора?
Я разрабатываю иерархию классов, которая состоит из базового класса с несколькими характеристиками. Базовый класс предоставляет реализации по умолчанию для нескольких методов, а черты характера выборочно переопределяют определенные методы через...
26308 просмотров
schedule 18.05.2022

Создание признака синглтона с помощью PHP 5.4
Недавно мы обсуждали возможность создания trait Singleton PHP Traits , и мы поиграли с его возможной реализацией, но столкнулись с проблемами при ее создании. Это академическое упражнение. Я знаю, что Singletons have very little - if not...
10167 просмотров
schedule 18.02.2022

Как разыменовать тип в С++ 03?
Как получить «разыменованный тип» другого типа в С++ 03? Обратите внимание, что это может быть другой разыменовываемый тип, например std::vector<int>::iterator . например если у меня есть template<typename T> struct MyPointer {...
1838 просмотров

Scala: смешайте черты характера и класс case в сопоставлении с образцом
Я хочу сопоставить несколько классов кейсов. Если я их не знаю, я хочу сопоставить по указанному признаку, который классы должны расширять. Это похоже trait Event //root trait trait Status extends Event //special trait trait UIEvent extends...
13702 просмотров
schedule 18.10.2022

Возможен ли трейт-класс is_functor C++?
Как я могу вывести статически, если аргумент является объектом функции C++ (функтор)? template <typename F> void test(F f) {} Я пробовал is_function<F>::value , но это не работает. Также кажется, что черты is_functor нет, так...
2984 просмотров
schedule 01.03.2022

Можно ли изменить контекст типажа на тип, объявленный в качестве параметра типа?
То, что я хотел бы сделать, похоже на это: class Foo( val bar: String = "Hello!" ) extends MyTrait[ Foo ] trait MyTrait[ T ] { self : T => T.bar } Замена self : T на self : Foo, очевидно, работает, но MyTrait может расширять другой...
110 просмотров
schedule 19.11.2022

Может ли аргумент по умолчанию параметра шаблона быть специализированным?
В C++, если у меня есть параметр шаблона, как я могу четко специализировать аргумент по умолчанию? Например, рассмотрим следующее: template <class Key, class Value = int > class Association; Что, если я хочу, чтобы вместо Value по...
179 просмотров

Абстрактные поля в типажах (Scala) — порядок построения
Итак, я читаю книгу Scala для нетерпеливых и один из ее примеров. Использует трейт Logger , который, по сути, выводит String в некоторый поток. В примере у него есть трейт ConsoleLogger (который расширяет Logger ), который выводит...
619 просмотров

PHP — Трейты как помощники
Есть ли какие-либо противоречия в использовании трейтов для внедрения вспомогательных методов, подобных этому? class Foo { use Helper\Array; function isFooValid(array $foo) { return...
4660 просмотров
schedule 14.02.2023

Scala — Абстрактные функции в трейтах
trait Rectangular{ def topLeft:Point def bottomRight:Point def left=topLeft.x def right=bottomRight.x def width=right-left //andmanymoregeometricmethods... } class Rectangle(val topLeft:Point,val bottomRight:Point) extends Rectangular{...
228 просмотров
schedule 26.05.2022

Как перегрузить конструктор класса внутри трейтов в PHP ›= 5.4
В PHP 5 я могу перегружать конструкторы (и любые другие методы). Но если я получу такой код: class Base { public function __construct($a, $b) { echo $a+$b; } public function sayHello() { echo 'Hello '; } }...
55046 просмотров
schedule 19.10.2022

Как неявно работает в этом примере из Scala in Depth
В книге Scala in Depth. Вот этот пример неявной области видимости: scala> object Foo { | trait Bar | implicit def newBar = new Bar { | override def toString = "Implicit Bar" | } | } defined module Foo scala>...
204 просмотров
schedule 09.03.2023

Scala, Расширить объект с помощью универсального признака
Я использую Scala и хочу расширить объект (одноэлементный) с помощью трейта, который предоставляет структуру данных и некоторые методы, например: trait Tray[T] { val tray = ListBuffer.empty[T] def add[T] (t: T) = tray += t def get[T]:...
17970 просмотров
schedule 25.03.2022