Проекция данных

Последнее обновление: 04.03.2024

C++

C#

Dart

F#

JavaScript

Kotlin

Python

C++

Начиная со стандарта С+20

#include <iostream>
#include <vector>
#include <ranges>

class Person
{
public:
    Person(std::string name, unsigned age): name{name}, age{age}{}
    std::string getName() const {return name;}
    unsigned getAge() const {return age;}
    void print() const  
    {
        std::cout << name <<"\t" << age << std::endl;
    }
private:
    std::string name;
    unsigned age;
}; 
int main()
{
    std::vector<Person> people 
    {
        Person{"Tom", 38}, Person{"Kate", 31}, Person{"Bob", 42}, 
        Person{"Alice", 34}, Person{"Sam", 25}
    };
    // получаем из Person строку std::string с именем
    auto personToString = [](const Person& p){return p.getName();};
    // трансформация с помощью функции представления
    auto view = people | std::views::transform(personToString);

    for(const auto& person: view)
    {
        std::cout << person << std::endl;
    }
    // трансформация с помощью конструктора представления
    view = std::ranges::transform_view{people, personToString};

    for(const auto& person: view)
    {
        std::cout << person << std::endl;
    }
}

C#

var people = new List<Person>
{
    new Person("Tom", 38), new Person("Kate", 31), 
    new Person("Bob", 42), new Person("Alice", 34), 
    new Person("Sam", 25)
};
    
// получаем из Person строку с именем
var view = people.Select((person) => person.Name);
 
foreach(var person in view)
{
    Console.WriteLine(person);
}
class Person
{
    public string Name {get;}
    public int Age {get;}
    public Person(string name, int age)
    {
      this.Name = name;
      this.Age = age;
    }
}

Dart

class Person{
    String name;
    int age;
    Person(this.name, this.age);
}

void main (){
    var people = [Person("Tom", 38), Person("Kate", 31), Person("Bob", 42), 
        Person("Alice", 34), Person("Sam", 25)];
    
    // получаем из Person строку с именем
    var view = people.map((person) => person.name);
 
    for(final person in view)
    {
        print(person);
    }
}

F#

type Person (name, age) = 
    member _.Name = name
    member _.Age = age

let people = [ Person("Tom", 38); Person("Kate", 31); Person("Bob", 42); 
        Person("Alice", 34); Person("Sam", 25) ]
    
// получаем из Person строку с именем
let view = List.map (fun (p:Person) ->  p.Name) people

for person in view do printfn "%s" person

JavaScript

function Person(name, age){
    this.name = name;
    this.age = age;
    this.print = function(){ 
        console.log(`Имя: ${this.name}  Возраст: ${this.age}`);
    }
}
const people = [
    new Person("Tom", 38), new Person("Kate", 31), 
    new Person("Bob", 42), new Person("Alice", 34), 
    new Person("Sam", 25)
];
    
 // получаем из Person строку с именем
const view = people.map((person) => person.name);
for(person of view)
{
    console.log(person);
}

Kotlin

fun main() {

    val people = listOf(
        Person("Tom", 38), Person("Kate", 31), Person("Bob", 42),
        Person("Alice", 34), Person("Sam", 25)
    );
    // получаем из Person строку с именем
    val view = people.map{it.name}
    for(person in view){
        println(person)
    }
}
class Person(val name: String, val age:Int)

Python

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age 
        
people = [ Person("Tom", 38), Person("Kate", 31), Person("Bob", 42), 
        Person("Alice", 34),  Person("Sam", 25) ]

# получаем из Person строку с именем
view = map(lambda p: p.name, people)
 
for person in view:
    print(person)
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850