Как я должен думать о классах продуктов Scala?



пакет "scala" имеет ряд классов с именами Product, Product1, Product2 и так далее, вплоть до Product22.



описания этих классов, безусловно точные. Например:



Product4 is a cartesian product of 4 components


точное, да. Общительный? Не столько. Я ожидаю, что это идеальная формулировка для тех, кто уже понимает смысл "декартового продукта", используемого здесь. Для того, кто этого не делает, это звучит немного круговым. "О да, ну конечно Product4 это мычать продукт 4 мычать-мычит."



пожалуйста, помогите мне понять правильную функционально-языковую точку зрения. Какой смысл здесь использовать" декартово произведение"? На что указывают члены "проекции" классов продуктов?

616   4  

4 ответов:

" множество всех возможных пар элементов, компоненты которых являются членами двух множеств."

"в частности, декартово произведение двух множеств X (например, точек на оси x) и Y (например, точек на оси y), обозначенных X × Y, является множеством всех возможных упорядоченных пар, первая составляющая которых является членом X и вторая составляющая является членом Y (например, вся плоскость x-y)"

пожалуй, лучше понять можно получить, зная, кто происходит от него:

Прямые Известные Подклассы: Tuple4

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

в любом случае, если у вас есть типы A, B, C и D, то Product4[A, B,C, D] - это класс, экземпляры которого являются всеми возможными элементами декартова произведения A, B, C и Д. буквально.

за исключением, конечно, того, что Product4-это черта, а не класс. Он просто предоставляет несколько полезных методов для классов, которые являются декартовыми произведениями четырех разных наборов.

все остальные пошли на математику, так что я пойду на глупый ответ на всякий случай! У вас есть простой автомобиль, который имеет коробку передач, рулевое колесо, акселератор и ряд пассажиров. Каждый из них может варьироваться: в какой передаче вы находитесь, в каком направлении вы управляете, ваша нога "на полу" etc. Поэтому коробка передач, рулевое управление, акселератор и т. д. переменные и у каждого своя set возможных значений.

декартово произведение каждого из этих наборов в основном все возможные состояния, что ваш автомобиль может быть в. Поэтому несколько возможных значений:

(gear,    steer,    accel,     pssngers)
--------|---------|----------|---------
(1st,     left,     foot down, none)
(neutral, straight, off,       the kids)

размер декартова произведения, конечно, произведение (умножение) возможностей каждого набора. следовательно, если у вашего автомобиля есть 5 передач (+ обратный + нейтральный), рулевое управление левое/прямое/правое, акселератор включен/выключен и до 4 пассажиров, то есть 7 x 3 x 2 x 4 или 168 возможных состояний.

этот последний факт является причиной того, что декартово произведение (названное в честь Рене Декарт кстати) имеет символ умножения x

С этой теме:

из математики, декартово произведение двух множеств A и B обозначается как AxB и его элементы (a, b), где a в A и b В B.

для трех наборов элементы (декартова) произведения являются (a, b, c) и так далее...

Итак, у вас есть кортежи элементов, и действительно Вы можете увидеть в библиотеке Scala, что все Кортежи (например Tuple1) наследовать соответствующий признак продукта (например Product1).

подумайте о продукте как абстракции и соответствующий кортеж конкретное представление.

проекция позволяет получить экземпляр класса 'n', на который ссылается продукт.

декартово произведение есть произведение множеств. Заданные множества A и B, A x B ("крест B") - это множество всех кортежей (x, y), таких что x находится в A, а y-в B. декартово произведение может быть аналогично определено по типам: заданные типы A и B, A x B-тип кортежей (x, y), где x-тип A, а y-тип B.

Итак, Product4-это тип кортежей (w, x, y, z), где w, x, y, z-компоненты.

Comments

    Ничего не найдено.