2016-11-02 1 views
2

Есть ли какая-то альтернатива методу LINQ Select() на языке Swift?Выберите() из LINQ в swift 3.0?

В качестве примера, в C# я могу сделать следующее:

var ranks = cards.Select(a=> a.Rank).ToArray(); 

, но как я могу сделать то же самое с помощью Swift язык?

+0

Параметр 'Rank' свойство' Card' следует назвать 'rank', в соответствии с Быстрые соглашения об именах. C# использует capitals для свойств и строчные (или '_' префикс) для переменных экземпляра. Swift не имеет переменных экземпляра, поэтому нет необходимости в различии. Свойства areLowerCamelCase, а капитал - верблюд, зарезервирован для типов и статических свойств. – Alexander

ответ

5

map(_:)

let ranks = cards.map{ $0.Rank } 

который является синтаксическим сахаром для:

let ranks = cards.map({ (card: Card) -> Rank in 
    return card.rank 
}) 

приложенных синтаксического сахара включает в себя:

  1. Trailing closure syntax

    let ranks = cards.map { (card: Card) -> Rank in 
        return card.rank 
    } 
    
  2. типа Довод умозаключение

    let ranks = cards.map { card -> Rank in 
        return card.rank 
    } 
    
  3. Возвращаемый тип умозаключение

    let ranks = cards.map { card in 
        return card.rank 
    } 
    
  4. неявной возвращаемое значение

    let ranks = cards.map { card in 
        card.rank 
    } 
    
  5. аргументы закрытия анонимных

    let ranks = cards.map { $0.rank } 
    

Отъезд language guide section on closures (Свифт имя для того, что # C называет лямбды) для получения дополнительной информации,

+0

Похоже, что это он! Большое спасибо. – Andrew

+0

@ Андрю Я дал разбивку о том, как различные синтаксические сахара применяются для достижения окончательной формы, которую я показал. Это описано в руководстве по языку. Вы должны обязательно прочитать его, это очень хорошо написано, и вам будет легко понять, знаете ли вы C#. – Alexander

Смежные вопросы