Αλεχ
Например я могу сделать
Αλεχ
let arr = (0..100).map(|x| format!("Result: {}", x)).collect::HashSet<_>
Αλεχ
в шарпике как?
Αλεχ
не завезли метода? упс
Αλεχ
интерполяция разве что аккуратнее выглядит
Αλεχ
но и все
Αλεχ
тем более её не так давно завезли
Cat
Cat
Αλεχ
кстати альтернативно можно записать как let arr: Vec<_> = (0..100).map(|x| format!("Result: {}", x)).collect() если двоеточия не любишть
Αλεχ
Αλεχ
инфа о типе лежит в объекте, а не в указателе
🐁 Arutrancetro
хорошо, а как в расте сделать такое:
public class SomeClass {
public event Action Completed;
public void Run() {
// Some code...
Completed?.Invoke();
}
}
var obj = new SomeClass();
obj.Completed += () => { Console.WriteLine("Completed!"); };
obj.Run();
🐁 Arutrancetro
т.е. есть события на уровне языка? )
Αλεχ
события это просто делегаты
🐁 Arutrancetro
ну я понимаю
Cat
🐁 Arutrancetro
это делегаты с ограничениями
Cat
то, что она сделана "из коробки" не отменяет того, что это рефлексия
Cat
Αλεχ
события это вообще устаревший подход
Αλεχ
можешь доклад MS почитать на эту тему
🐁 Arutrancetro
ну мб и устаревший, но очень удобный
Cat
а в каком контексте используются такие события?
Cat
(кроме UI)
Αλεχ
🐁 Arutrancetro
это инкапсулирует логику класса
🐁 Arutrancetro
можно совсем в другом месте программы слушать события
🐁 Arutrancetro
и делать что угодно
Cat
каким образом?
Αλεχ
я бы написал
public class SomeClass {
public Task RunAsync() {
// Some code...
}
}
var obj = new SomeClass();
obj.RunAsync().ContinueWith(...)
Αλεχ
это ничем не хуже инкапсулирует
Αλεχ
зато без трешатни с событиями
Αλεχ
где я могу комбинаторы юзать с этим всем
Cat
Cat
кроме того, что этим пулом пропитывается рантайм и не нужно явно передавать pubsub как аргумент/whatever
Αλεχ
Cat
дада, я о том же
Αλεχ
единственное, когда это удобно - для UI десктопа
Αλεχ
в остальных случаях через них асихнронщину эмулируют
Αλεχ
и выглядит это как говно
Ευγένιος
Капец активные седня.
🐁 Arutrancetro
хз, мне нравятся события =)
Αλεχ
Αλεχ
Αλεχ
я сразу вижу, что он хреновый
Αλεχ
например как сделать так, чтобы мы запустили 100 разных объектов
Αλεχ
дождались ответа у первого же
Αλεχ
а остальные отменили?
Ευγένιος
🐁 Arutrancetro
суть событий в том, что нельзя действовать на других слушателей
Cat
Αλεχ
Αλεχ
они друг про друга не знают
Αλεχ
у тебя есть фабрика
Αλεχ
которая например пингует 1000 сайтов
Cat
Αλεχ
пусть Run это Ping
Αλεχ
и ты хочешь пропинговать первый попавшисйся
Αλεχ
чтобы узнать есть ли интернет
Berkus
Αλεχ
если есть то остальные пинги надо отменить
🐁 Arutrancetro
ну это немного другая задача
🐁 Arutrancetro
события не для этого)
🐁 Arutrancetro
события оповещают, когда где-то что-то произошло в программе
🐁 Arutrancetro
например, дисконнект
🐁 Arutrancetro
и в событии обработку делаешь
Αλεχ
та же самая
Αλεχ
Αλεχ
я вот за последние года 3 ни 1 события не написал
Αλεχ
это уже неплохо