Механизм приложения - почему там PhoneNumber, Ссылка, Оценивая и т.д. классы?

Вот другой ответ Ruby, эти лямбды использования:

(a=lambda{a.call}).call
10
задан David Underhill 21 July 2010 в 20:32
поделиться

4 ответа

Эти типы являются «семантическими». Они присутствуют в Java API для паритета с Python API. В API Python они определяют особое поведение в отношении метода .to_xml () - например, PhoneNumberProperty сериализуется следующим образом:

<property name="foo" type="gd:phonenumber"><gd:phoneNumber>12345-678</gd:phoneNumber></property>
7
ответ дан 4 December 2019 в 00:25
поделиться

Я думаю, что они в основном существуют для того, чтобы охватить общие случаи и сэкономить время разработчиков. Если во многих приложениях используется поле с номером телефона, зачем требовать от каждого разработчика писать их? Разработчик по-прежнему может писать свои собственные, если ему нужно / он хочет.

2
ответ дан 4 December 2019 в 00:25
поделиться

Не уверен насчет java, но в питоне следующая модель/код (тестировался на сервере dev) будет бросать BadValueError с сообщением "Invalid URL: stackoverflow.com"

class foo(db.model):
    link = db.LinkProperty()

bar = foo()
bar.link = 'stackoverflow.com'

While:

bar.link = 'http://stackoverflow.com'

Works fine.

Я не тестировал, но другие свойства также могут делать или не делать валидацию.

.
2
ответ дан 4 December 2019 в 00:25
поделиться

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

Например, если вы используете тип PhoneNumber для поля с именем userNumber, то рендер, основанный на рефлексии, может понять, что он должен автоматически назначать соответствующий валидатор текстовому полю, которое будет его представлять.

Regards, Павел.

1
ответ дан 4 December 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: