Что такое дот нотация

Точечная нотация

В предыдущем разделе Доступ и вывод на страницу определенного значения JSON мы получили доступ и вывели на страницу определенное значение из ответа JSON. Здесь еще немного углубимся в точечную нотацию, поскольку для использования ответа необходимо понимать, как извлекать правильное значение JSON, которое мы хотим.

Точечная нотация

Для доступа к свойствам объекта используется точка после имени объекта. Например, предположим, у нас есть объект с именем data :

Для извлечения Tom нужно использовать data.name

Обратите внимание на различные уровни вложенности для отслеживания соответствующих объектов и получения доступа к необходимой информации. Доступ к каждому нижнему уровню получаем после имени объекта, за которым следует точка.

Использование квадратных скобок для получения значений в массиве

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

👨‍💻 Упражнение с точечной нотацией

В этом практическом занятии попрактикуемся извлекать разные значения при помощи точечной нотации.

Корректное отображение можно посмотреть на этой странице, на ней же указаны и правильные ответы.

Отображение параметров погоды на странице

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

По сути это тот же код, который мы создали в разделе Доступ и вывод на страницу определенного значения JSON, но кое-какие различия есть. Вот что отличается:

Если загрузить страницу и нажать кнопку Check wind conditions то отобразиться следующее:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Результат можно посмотреть здесь

Следующий модуль

По мере выполнения практических занятий в модуле Использование API в роли разработчика, мы получили общее представление о том, как работают REST API, какая информация нужна разработчикам, как они могут использовать API, как они делают запросы, оценивают ответы и другие детали.

Теперь, с таким бэкграундом пришла пора топить педаль газа в пол и гнать к новым вершинам профессии “Технический писатель”.

В следующем модуле Документирование конечных точек, возьмем на себя задачу документирования новой конечной точки, которая была добавлена ​​в API погоды. Изучим основные разделы документации конечных точек, терминологию использования и соглашений о форматировании адресной информации по API.

Источник

Переменные с точечной нотацией в GTM (+видео)

Обратиться к свойствам объекта в JavaScript можно несколькими способами: с помощью точечной нотации (dot notation) или скобочной нотации (bracket notation). Но зачем это знать веб-аналитику? Постараемся разобраться.

Работая с GTM, вы можете столкнуться с такими задачами:

Зачем это нужно? Например, чтобы передавать эти данные в Google Analytics в качестве пользовательских метрик для дальнейшего анализа и сегментации пользователей.

Как это сделать? Чтобы вы лучше понимали, о чем пойдет речь в этой статье, рекомендую прочитать материал «Отслеживание выбранного элемента из выпадающего списка в GTM».

Причем же здесь переменные и точечная нотация? Постараюсь подробно пояснить на следующих примерах. Когда мы работаем в JavaScript с массивами, мы можем хранить в них различные элементы и объекты.

Например, у нас есть такой массив, состоящий из 5 элементов с различными типами данных:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

И мы хотим получить из iMassiv второй элемент со значением “GTM”. Для этого можно указать его номер в квадратных скобках:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Полученное значение «GTM»

Подробнее об объектах в JavaScript можно почитать здесь, о массивах по этой ссылке.

Немного изменив массив, получим:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Напоминает конструкцию уровня данных (dataLayer)? Что-то похожее вы наверняка видели при настройке электронной торговли и динамического ремаркетинга. Вот как выглядит dataLayer для интернет-магазина с типом с объектами передаваемыми в момент показов товаров Показы (Impressions).

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Событие gtm-ee-event электронной торговли

Такая же вложенная структура, только пар ключ-значение гораздо больше. Для обращения к свойствам объекта используется запись через точку:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Полученный результат «Сервис»

Это и есть точечная запись (Точечная нотация, Dot notation). Поскольку у меня единственный уровень вложенности, то используется одна точка. Но если нам нужно добавить еще одно свойство со значением внутри объекта, а потом вывести значение этого свойства, то будет использоваться уже две точки:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

В примере выше я к GTM добавил еще один объект с новым свойством и значением в фигурных скобках < >.

Теперь задача приобретает совсем понятный вид. Как извлекать такие данные из dataLayer, который уже предопределен и хранит в себе определенные пары с ключом и значением?

Варианта 2:

1. в консоли разработчика написать команду dataLayer, найти необходимое событие из списка сработанных, спуститься на нужный уровень и записать итоговое значение конкретной переменной;

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

В консоли разработчика искать значение вложенного элемента

2. можно воспользоваться расширением Datalayer Checker для браузера Google Chrome.

Это самый простой способ отладки и проверки реализаций dataLayer без использования консоли разработчика. Datalayer Checker быстро покажет все необходимые свойства объектов в нужном формате (FLAT & JSON):

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Готовые переменные с точечной нотацией

Останется только скопировать и вставить ключ в Google Tag Manager для пользовательской переменной типа Переменная уровня данных (Версия 2).

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Пример переменной типа «Переменная уровня данных»

В примере выше я хочу, чтобы в переменной выводилось наименование просматриваемого товара.

В Google Tag Manager можно определить интерпретацию точек в имени переменной. Делается это с помощью версии уровня данных:

Версия 1. Разрешить точки в названиях ключей. Например, в выражении dataLayer.push(‘a.b.c’: ‘value’) название ключа будет интерпретировано как a.b.c (т. е. <'a.b.c': 'value'>).

Версия 2. Интерпретировать значения с точками как иерархические значения. В этом случае выражение dataLayer.push(<'a.b.c': 'value'>) будет интерпретировано как трехуровневая иерархия: >>.

Поскольку в документации Google (и Яндекса тоже) речь идет о вложенной иерархии, то при настройке переменных выбирают именно версию 2.

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Уровень данных для Яндекс.Метрики и Google Analytics (e-commerce)

Возвращаемся к примеру. Результатом настроенной переменной будет правильно определенное значение:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Аналогично можно извлечь значения всех других переменных (бренда, цены, категории, ID заказа и т.д.).

Отлично! Мы сделали это. Но бывают задачи более сложного уровня. Например, как отслеживание выбранного элемента из выпадающего списка в GTM (статья, что рекомендовал прочитать в самом начале). Эта информация существует в dataLayer как выбранное значение из этого списка, и для его извлечения вам нужно сначала его найти, записать путь и после передать в Google Tag Manager в качестве пользовательской переменной. А как быть с теми полями и данными, которые формируются и отправляются в момент совершения какого-либо события? Например, пользователь заполнил заявку на вашем сайте и отправил форму. dataLayer здесь не формируется, а в роли элементов являются те самые выпадающие списки, input, textarea и другие элементы форм. А отслеживать их очень хочется. Поиск вложенности и пути до переменной отнимает много времени.

На помощь приходит другое расширение браузера для Google Chrome, которое называется GTM dataLayer Sifter. Установить его можно по ссылке.

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

GTM dataLayer Sifter

В правом верхнем углу окна браузера появится иконка с приложением. Что умеет делать это расширение?

Плагин предназначен для поиска и определения точечной нотации от элемента конкретного события по отношению к другому элементу на странице, а также извлечения значения элемента DOM (например, для поля формы) на уровне данных, которое затем можно использовать в GTM в качестве переменной.

Давайте попробуем извлечь значение поля Имя в форме на сайте graphanalytics.ru в момент ее отправки. Нам необходимо передать значение, которое заполнил пользователь, в Google Analytics.

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Пример извлечения данных из поля Имя

В моем блоге есть статья на эту тему. Там это было реализовано оптимальным способом через пользовательскую переменную типа Собственный код JavaScript. В этом примере будем использовать готовое решение GTM dataLayer Sifter.

Я для этого зайду на сайт, открою форму и заполню поле Имя. Затем необходимо открыть консоль разработчика (клавиша F12 в Google Chrome). Далее заполняю все поля формы и делаю тестовую заявку (1), чтобы сработало наше событие gtm.formSubmit (триггер «Отправка формы»).

После этого я перехожу на вкладку GTM dataLayer Sifter (2) и выделяю то событие, относительно которого хочу получить значение поля Имя. В моем случае – это gtm.formSubmit (3).

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

После этого я могу прослушать необходимое мне поле и получить значение переменной с точечной нотацией. Для этого я перехожу на вкладку Elements и исследую элемент Имя (4). Выделяю его (5) и справа под выделенным событием в GTM dataLayer Sifter в графе Results я получаю 3 заполненных строчки:

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Копируем то, что в строчке Path to Value. Далее переходим в Google Tag Manager и создаем переменную типа Переменная уровня данных. Вставляем туда полученное значение. Сохраняем.

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Наша переменная уровня данных

Теперь идем в наш тег и в качестве дополнительного поля в ярлыке события (пример!) я выберу эту переменную.

Что такое дот нотация. Смотреть фото Что такое дот нотация. Смотреть картинку Что такое дот нотация. Картинка про Что такое дот нотация. Фото Что такое дот нотация

Передача значения переменной в ярлыке события

Вы можете передавать значения полей в специальных параметрах и показателях. Однако не забывайте: загрузка данных, которая может идентифицировать личность пользователя, запрещена политикой Google.

Сохраняем тег. Для проверки корректности передачи данных можно воспользоваться режимом предварительного просмотра GTM.

Для наглядности я записал видео работы расширения GTM dataLayer Sifter:

Источник

dot notation

1 dot notation

list notation — списочное обозначение; списочная запись

2 dot notation

Posish notation — польская запись; польская нотация

Warsaw notation — польская запись; польская нотация

infix notation — инфиксная запись; инфиксная нотация

list notation — списочное обозначение; списочная запись

prefix notation — префиксная запись; префиксная нотация

3 dot notation

4 dot notation

5 dot notation

6 dot notation

7 dot notation

8 dot notation

9 dot notation

10 dot notation

11 dot notation

12 dot notation

13 dot-decimal notation

14 dot operator

15 dotted decimal notation

16 dotted quad notation

17 four-part dotted notation

18 точечное обозначение

См. также в других словарях:

Dot notation — can refer to: Newton s notation for differentiation (see also Notation for differentiation). Lewis dot notation also known as Electron dot notation Dot decimal notation Kepatihan notation Dotted note Dot product DOT language Dot notation is also… … Wikipedia

Notation for differentiation — In differential calculus, there is no single uniform notation for differentiation. Instead, several different notations for the derivative of a function or variable have been proposed by different mathematicians. The usefulness of each notation… … Wikipedia

Dot-decimal notation — is a presentation format for numerical data. It consists of a string of decimal numbers, each pair separated by a full stop (dot). A common use of dot decimal notation is in information technology where it is a method of writing numbers in octet… … Wikipedia

Dot (diacritic) — · Dot Diacritics accent acute( … Wikipedia

Dot — Contents 1 Typography 2 Entertainment 3 Companies and agencies 4 … Wikipedia

Dot product — Scalar product redirects here. For the abstract scalar product, see Inner product space. For the operation on complex vector spaces, see Hermitian form. For the product of a vector and a scalar, see scalar multiplication. In mathematics, the dot… … Wikipedia

Notation (Mathematik) — Als Notation bezeichnet man in Mathematik, Logik und Informatik die Schreibweise von Formeln und Ausdrücken mittels mathematischer Symbole. Die mathematische Notation entspricht einer Sprache, die formaler ist als viele natürliche Sprachen und… … Deutsch Wikipedia

dot — I. /dɒt / (say dot) noun 1. a minute or small spot on a surface; a speck. 2. a small, roundish mark made with or as with a pen. 3. anything relatively small or speck like. 4. Music a. a point placed after a note or rest, to indicate that the… … Australian-English dictionary

notation — Synonyms and related words: abstract, accent, accent mark, addition, adversaria, aide memoire, alphabet, annotation, apparatus criticus, approximation, arrangement, art, bar, binary digit, bit, blueprint, cancel, character, charactering,… … Moby Thesaurus

dot — Synonyms and related words: accent, accent mark, ace, appanage, atom, band, bar, bespangle, bespeckle, bespot, besprinkle, birthmark, bit, blaze, blaze a trail, blemish, blotch, brand, bread, cancel, caste mark, chalk, chalk up, character, check … Moby Thesaurus

Newton’s notation — for differentiation, or dot notation, uses a dot placed over a function name to denote the time derivative of that function. Newton referred to this as a fluxion. Isaac Newton s notation is mainly used in mechanics. It is defined as: and so on.… … Wikipedia

Источник

Точечная нотация и обозначение сообщений для объявленных свойств

Теперь у нас есть «точечное» обозначение свойств. Я видел различные назад и далее о достоинствах точка нотации и обозначения сообщений. Чтобы сохранить ответы без изменений, я не буду отвечать в любом случае в вопросе.

Что вы думаете о точечной нотации или нотации сообщений для доступа к свойствам?

Действительный комментарий связан с техническими проблемами (упорядочение операций, приоритет выбора, производительность и т.д.), ясность (структура и природа объекта, как pro, так и con!), лаконичность и т.д.

Заметьте, я из школы строгого качества и удобочитаемости в коде, работая над огромными проектами, где кодовое соглашение и качество имеют первостепенное значение (пишите один раз в тысячу раз парадигму).

ОТВЕТЫ

Ответ 1

Не используйте точку для поведения. Используйте точку, чтобы получить доступ или установить атрибут как материал, обычно атрибуты, объявленные как свойства.

Для новых пользователей, относящихся к Objective-C, я бы рекомендовал не использовать точку для чего-либо, кроме материала, объявленного как @property. Как только вы почувствуете язык, сделайте то, что кажется правильным.

Например, я нахожу следующее совершенно естественным:

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

Ответ 2

Позвольте мне начать с того, что я начал программировать в Visual/Real Basic, а затем перешел на Java, поэтому я довольно привык к синтаксису точек. Однако, когда я, наконец, перешел на Objective-C и привык к скобкам, затем увидел введение Objective-C 2.0 и его точечный синтаксис, я понял, что мне это действительно не нравится. (для других языков это нормально, потому что это то, как они катятся).

У меня есть три основных говядины с точечным синтаксисом в Objective-C:

Говядина # 1: Непонятно, почему вы можете получать ошибки. Например, если у меня есть строка:

Тогда это компилируется просто отлично, потому что something является самой структурой, которая имеет член NSRect, и я могу использовать ее как lvalue.

Итак, я думаю, что мое резюме Beef # 2 состоит в том, что вы можете переопределить значение синтаксиса точки с помощью специального кода.

Говядина # 3: Я думаю, что это выглядит плохо. Как программист Objective-C, я полностью использую синтаксис, чтобы читать и видеть строки и строки красивых скобок, а затем внезапно разбиваться на foo.name = newName; foo.size = newSize; и т.д. Немного отвлекает меня. Я понимаю, что некоторые вещи требуют точечного синтаксиса (C structs), но это единственный раз, когда я их использую.

Конечно, если вы пишете код для себя, используйте то, с чем вам удобно. Но если вы пишете код, который вы планируете открывать, или вы пишете то, чего не ожидаете поддерживать навсегда, то я бы настоятельно рекомендовал использовать синтаксис скобок. Это, конечно, только мое мнение.

Недавнее сообщение в блоге против синтаксиса точки: http://weblog.bignerdranch.com/?p=83

Возврат к следующему сообщению: http://eschatologist.net/blog/?p=226 (с оригинальной статьей в пользу синтаксиса точки: )

Ответ 3

Я новый разработчик Cocoa/Objective-C, и я беру его на себя:

Однако, я считаю это стилистическим выбором, и я не думаю, что есть правильный или неправильный способ, , если он согласован и читаем, как и любой другой стилистический выбор (например, помещая вашу фигуру в фигурные скобки в той же строке, что и заголовок метода или следующая строка).

Ответ 4

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

Дословные обозначения за и против

Примеры кода:

(1) Пример кода для примера использования сложного оператора:

Ответ 5

Использование стиля языка, соответствующего самому языку, является лучшим советом здесь. Однако это не относится к написанию функционального кода в OO-системе (или наоборот), а точечное обозначение является частью синтаксиса в Objective-C 2.0.

Любая система может быть использована неправильно. Существование препроцессора на всех языках, основанных на C, достаточно, чтобы сделать действительно довольно странные вещи; просто посмотрите на Obfuscated C Contest, если вам нужно посмотреть, как это странно. Означает ли это, что препроцессор автоматически плох и что вы никогда не должны его использовать?

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

Доступ к свойствам может иметь побочные эффекты. Это ортогонально синтаксису, используемому для получения этого свойства. CoreData, делегирование, динамические свойства (first + last = full) будут обязательно выполнять некоторую работу под обложками. Но это будет путать «переменные экземпляра» с «свойствами» объекта. Нет причин, по которым свойства должны обязательно храниться как есть, особенно если они могут быть вычислены (например, длина строки). Поэтому, если вы используете foo.fullName или [foo fullName], все равно будет динамическая оценка.

В конечном счете, это сводится к тому, что «это похоже на вопрос структуры». На данный момент это, пожалуй, главный отличительный признак дебатов; если у вас есть структура, она работает иначе, чем если у вас есть объект. Но это всегда было правдой; вы не можете отправить сообщение struct, и вам нужно знать, основана ли она на основе стека или reference/malloc. Существуют уже ментальные модели, которые отличаются в терминах использования ([[CGRect alloc] init] или struct CGRect?). Они никогда не были унифицированы с точки зрения поведения; вам нужно знать, с чем вы имеете дело в каждом случае. Добавление обозначения объектов для объектов очень маловероятно, чтобы запутать любого программиста, который знает, каковы их типы данных; и если они этого не делают, у них большие проблемы.

Ответ 6

Я использую его для свойств, потому что

немного легче читать, чем

во втором случае читаемость прерывается, помещая ваш мозг в режим отправки сообщений, тогда как в первом случае ясно, что вы получаете доступ к свойству people объекта group.

Я также буду использовать его при изменении коллекции, например:

является более читаемым, чем

Акцент в этом случае должен заключаться в действии добавления объекта в массив вместо цепочки двух сообщений.

Ответ 7

В основном я вырос в возрасте Objective-C 2.0, и я предпочитаю точечную нотацию. Для меня это позволяет упростить код, вместо дополнительных скобок, я могу просто использовать точку.

Мне также нравится синтаксис точки, потому что он действительно чувствует, что я обращаюсь к свойству объекта, вместо того, чтобы просто отправлять ему сообщение (конечно, точечный синтаксис действительно переводит на отправку сообщений, но для ради видимости, точка чувствует себя по-другому). Вместо того, чтобы «вызвать геттер» с помощью старого синтаксиса, мне действительно кажется, что я получаю что-то полезное от объекта.

**** Редактирование: как указано в bbum, вы также можете использовать dot-синтаксис для вызова любого метода на объекте (я не знал об этом). Поэтому я скажу, что мое мнение о точечном синтаксисе касается только свойств объекта, а не ежедневной отправки сообщений **

Ответ 8

Я предпочитаю синтаксис сообщений. но только потому, что это то, чему я научился. Учитывая множество моих классов и то, что не в стиле Objective-C 1.0, я бы не хотел их смешивать. У меня нет реальной причины, кроме «того, к чему я привык», чтобы не использовать синтаксис точки. ЗА ИСКЛЮЧЕНИЕМ этого, это заставляет меня INSANE

Я не знаю почему, но это действительно бесит меня, без уважительной причины. Я просто думаю, что делать

более читабельна. Но каждому свое!

Ответ 9

Честно говоря, я думаю, что это сводится к вопросу о стиле. Я лично против синтаксиса точки (особенно после того, как выяснилось, что вы можете использовать его для вызовов методов, а не только для чтения/записи переменных). Однако, если вы собираетесь использовать его, я бы настоятельно рекомендовал не использовать его для чего-либо, кроме доступа и изменения переменных.

Ответ 10

Одним из основных преимуществ объектно-ориентированного программирования является отсутствие прямого доступа к внутреннему состоянию объектов.

Синтезированные аксессоры мне кажутся попыткой упростить запись объектов, к которым напрямую обращаются данные. Я убежден, что это поощряет именно такой дизайн программы, что объектно-ориентированное программирование было создано, чтобы этого избежать.

Ответ 11

Ответ 12

Многие люди, кажется, смешивают «свойства» с «переменными экземпляра». Я думаю, что точка свойств заключается в том, чтобы сделать возможным изменение объекта без необходимости знать его внутренности. Переменная экземпляра, в большинстве случаев, является «реализацией» свойства (которое, в свою очередь, является «интерфейсом» ), но не всегда: иногда свойство не соответствует ivar, а вместо этого вычисляет возвращаемое значение ‘ на лету «.

Вот почему я верю в мысль о том, что «синтаксис» точка-точка «, в котором вы думаете, что вы обращаетесь к переменной, так что это запутывает», неверно. Точка или скобка, вы не должны делать предположений о внутренних элементах: это свойство, а не ivar.

Ответ 13

Ответ 14

Точечная нотация пытается сделать сообщения похожими на обращения к члену структуры, а это не так. В некоторых случаях может работать нормально. Но скоро кто-то придумает что-то вроде этого:

Выглядит хорошо. Но нет. Это то же самое, что

который не работает. Компилятор принимает первый, но по праву не второй. И даже если он выпустил ошибку или предупреждение для первого, это просто запутывает.

Ответ 15

Ответ 16

Использовать точечную нотацию (всякий раз, когда вы можете)

В случае методов, возвращающих некоторое значение

Не использовать точечную нотацию

В том случае, когда методы возвращают void, методы init или метод класса.

И мое личное любимое исключение

Ответ 17

Я лично не использую точечные обозначения в коде. Я использую его только в выражении привязки CoreData KVC, когда это требуется.

Причиной не использовать их в коде для меня является то, что точка-нотация скрывает семантику сеттера. Установка свойства в точечной нотации всегда выглядит как присваивание, независимо от семантики сеттера (присваивание/сохранение/копирование). Использование сообщения-уведомления делает видимым, что принимающий объект имеет контроль над тем, что происходит в сеттер, и подчеркивает тот факт, что эти эффекты необходимо учитывать.

Я все еще думаю, могу ли я использовать dot-notation при получении значения совместимого или объявленного свойства KVC, потому что он, по общему признанию, немного компактнее и читабельнее, и нет скрытой семантики. Прямо сейчас я придерживаюсь сообщения-уведомления ради последовательности.

Ответ 18

ОК, точечная нотация в Objective-C выглядит странно. Но я все равно не могу без этого сделать следующее:

Работает нормально, но:

Дает мне «Невозможно преобразовать в тип указателя». Я бы очень хотел, чтобы мой код выглядел совместимым с нотными сообщениями.

Ответ 19

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

Если мы используем «точечную» нотацию, разрешение цели для метода выполняется во время компиляции. Если мы используем передачу сообщений, разрешение цели откладывается на выполнение во время выполнения. Если цели решаются во время компиляции, выполнение выполняется быстрее, так как решение задач во время выполнения включает в себя несколько накладных расходов. (Не то, что разница во времени будет иметь большое значение). Поскольку мы уже определили свойство в интерфейсе объекта, нет смысла различать разрешение цели для свойства во время выполнения, и, следовательно, точка-нотация является обозначением, которое мы должны использовать для доступа к свойству.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *