какой clojure дизайн интерфейса библиотеки является лучшим?

Некоторое время, которого мы требуем для моделирования некоторого элемента от компонента, но если мы должны отобразить тот компонент только или стиль, так меньше тогда вместо того, чтобы использовать класс CSS, в котором мы идем для встроенного стиля, реагируют, js. reactjs встроенный стиль как то же как встроенный стиль HTML просто, имена свойства немного отличающиеся

Запись стиль в любом теге с помощью стиля = {{ опора: "значение" }}

import React, { Component } from "react";
    import { Redirect } from "react-router";

    class InlineStyle extends Component {
      constructor(props) {
        super(props);
        this.state = {};
      }

      render() {
        return (
          <div>
            <div>
              <div
                style={{
                  color: "red",
                  fontSize: 40,
                  background: "green"
                }}// this is inline style in reactjs
              >

              </div>
            </div>
          </div>
        );
      }
    }
    export default InlineStyle;
10
задан Charles Duffy 3 September 2009 в 03:48
поделиться

3 ответа

Я думаю, что первый вариант лучше. Он более расширяемый, в зависимости от того, как эти объекты будут использоваться. Легче добавить или изменить новую функцию, которая работает с существующим объектом, если функции и объекты разделены. В Clojure обычно нет особых причин объединять функции вместе с объектами, над которыми они работают, если только вы действительно не хотите скрыть детали реализации от пользователей вашего кода.

Если вы пишете интерфейс, для которого ожидаете много реализаций рассмотрите также возможность использования мультиметодов . Вы можете по умолчанию генерировать исключение «не реализовано», чтобы заставить разработчиков реализовать ваш интерфейс.

Как Гуцофтер сказал, если единственная причина, по которой вы: Учитывая, что второй вариант - позволить людям не вводить параметр при каждом вызове функции, вы можете подумать о том, чтобы все ваши функции использовали некоторую переменную в качестве объекта сокета по умолчанию и написали макрос with-socket который использует привязку для установки значения этой переменной. См. Встроенные методы печати, которые по умолчанию используют значение * out * в качестве выходного потока и без-out-str , который связывает * out * с строковый писатель, как пример Clojure.

Эта статья может вас заинтересовать; он сравнивает и противопоставляет некоторые идиомы ООП эквивалентам Clojure.

значение s. См. Встроенные методы печати, которые по умолчанию используют значение * out * в качестве выходного потока и без-out-str , которое связывает * out * с строковый писатель, как пример Clojure.

Эта статья может вас заинтересовать; он сравнивает и противопоставляет некоторые идиомы ООП эквивалентам Clojure.

значение s. См. Встроенные методы печати, которые по умолчанию используют значение * out * в качестве выходного потока и без-out-str , который связывает * out * с писатель строк, как пример Clojure.

Эта статья может вас заинтересовать; он сравнивает и противопоставляет некоторые идиомы ООП эквивалентам Clojure.

8
ответ дан 3 December 2019 в 23:50
поделиться

Я думаю, что чтение сообщения и запись сообщения являются служебными функциями. Что вам нужно сделать, так это инкапсулировать ваши функции в макросах with-. См. 'With-output-to-string' в общем lisp, чтобы понять, что я имею в виду.

Edit: Когда вы используете макрос with-, вы можете обрабатывать ошибки и выделять ресурсы в раскрытии макроса.

3
ответ дан 3 December 2019 в 23:50
поделиться

Я бы выбрал первый вариант и сделал бы все эти функции мультиметодными.

2
ответ дан 3 December 2019 в 23:50
поделиться