Стоимость печати $ 0

У меня есть определенная строка кода, которая выглядит так ...

let myMessages = theObjects.filter { $0.myJid.user == user.JID.user }

Теперь я хочу распечатать значение $0.myJid.user. Как я могу этого добиться ..?

Добавьте ключевое слово return, и вы сможете вставлять дополнительные операторы (например, print) в любое закрытие.

Cœur 05.11.2018 10:50

Спасибо за подсказку @ Cœur .. :)

user308123 05.11.2018 11:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
131
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете сделать это вот так.

let myMessages = theObjects.filter { (value) -> Bool in
    print(value.myJid)
    return value.myJid.user == user.JID.user
}

Кончик: Именование вашей переменной user кажется плохой идеей, поскольку у вас уже есть параметр с таким же именем для JID.

Редактировать: Кажется, я ошибался, говоря, что не могу распечатать $0. Вы можете сделать это так же, как и при обычном закрытии. Единственная разница в том, что вы можете опустить список аргументов и вам нужно добавить return. Чтобы напечатать с использованием сокращенного аргумента, проверьте @ Sateesh's отвечать.

Спасибо @Rakesha Shastri .. Это сработало. Еще одно беспокойство ... пожалуйста, не стесняйтесь ... :) .. Использование $ 1 вместо $ 0 вызывает ошибку Contextual closure type '(XMPPMessageArchiving_Message_CoreDataObject) throws -> Bool' expects 1 argument, but 2 were used in closure body. Означает ли это, что замыкания принимают либо истину, либо ложь (то есть одно из них), и поскольку я даю $ 1, который указывает на второе значение, выдается ошибка, поскольку в замыкании должно быть только одно значение ...?

user308123 05.11.2018 11:00

В фильтре нет $ 1. Сокращенные аргументы существуют для использования вместо параметров, определенных для закрытия. Таким образом, если замыкание не имеет 2 или более аргументов (как в случае с sort), $ 1 не существует.

Rakesha Shastri 05.11.2018 11:02

хорошо @ Ракеша Шастри. Спасибо .. Итак, если бы $ 1 должен был быть действительным, я предполагаю, что должно было бы быть значение, скажем, x, также вместе с value, например, так (значение, x) ...? и theObjects.count тоже должен был иметь более одного значения, верно ..?

user308123 05.11.2018 11:09

@ user308123 он не имеет ничего общего с theObjects. Достаточно взглянуть на метод sort. У этого есть два аргумента.

Rakesha Shastri 05.11.2018 11:11

Вы имеете в виду, что сортировка принимает 2 параметра, а фильтр - один параметр ..?

user308123 05.11.2018 11:17

@ user308123 да. Вам нужно сравнить 2 вещи, чтобы отсортировать их, верно? Итак, требуется 2. Вам нужен только один для фильтрации.

Rakesha Shastri 05.11.2018 11:17

Хорошо, @Rakesha Shastri .. так что всегда .. есть только $ 0, когда есть фильтр, и как $ 0, так и $ 1, когда есть сортировка ..?

user308123 05.11.2018 11:20

@ user308123 $ 0, когда замыкание принимает только один аргумент, $ 0 и $ 1, когда требуется два, $ 0, $ 1, $ 2, когда требуется три, и так далее ...

Rakesha Shastri 05.11.2018 11:21

Другой вариант:

let myMessages = theObjects.filter { print($0.myJid.user); return $0.myJid.user == user.JID.user }

Спасибо за ответ @Sateesh ... Проголосовали ... :)

user308123 05.11.2018 11:17

Другие вопросы по теме