Nano Hash - криптовалюты, майнинг, программирование

Реализация делегата с именованным параметром

Я пытаюсь соответствовать протоколу делегата, написанному на Objective-C. Один конкретный требуемый метод доставляет мне неприятности. Это выглядит так:

-(void)didReceiveData:(NSData*)data Device:(DFBlunoDevice*)dev;

Автозаполнение XCode Swift предлагает реализовать следующее:

func didReceiveData(data: NSData!, device dev: DFBlunoDevice!){...}

Но потом выдает ошибку:

Не соответствует протоколу «DFBlunoDelegate».

Обратите внимание на разницу в написании заглавными буквами именованного параметра «устройство». Изменение функции для чтения

func didReceiveData(data: NSData!, Device dev: DFBlunoDevice!){...}

приводит к новой ошибке:

Метод 'didReceiveData(:Device:)' имеет имена аргументов, отличные от требуемых протоколом 'DFBlunoDelegate' ('didReceiveData(:device:)')

Как я могу реализовать метод делегата Objective-C с именованными параметрами с помощью Swift?


  • Метод Objective-C назван с плохой заглавной буквы. Device: должно быть device:. Возможно, это поможет при переходе на Swift. 07.06.2016
  • Вы уверены, что первая ошибка действительно возникает из-за этого конкретного метода? Нет ли других возможных несоответствий? 07.06.2016
  • @ luk2302 да, я уверен. Если я отмечу только didReceiveData как необязательный, компилятор считает, что класс соответствует. 07.06.2016
  • @rmaddy - это работает! почему компилятору нужны строчные буквы для именованных параметров? 07.06.2016
  • Это стандартные соглашения об именах. Только имена классов должны начинаться с заглавных букв. Имена методов, переменных и параметров должны начинаться с нижнего регистра и использовать правильный верблюжий регистр. Даже Stack Overflow ожидает этого. Обратите внимание, как он искажает ваш код из-за заглавной буквы D. 07.06.2016

Ответы:


1

На этот вопрос ответил rmaddy в комментариях к вопросу:

Метод Objective-C назван с плохой заглавной буквы. Устройство: должно быть устройство:. Возможно, это поможет при переходе на Swift.

09.06.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..