Тёмный

Bringing pattern matching to Dart 

Flutter
Подписаться 570 тыс.
Просмотров 38 тыс.
50% 1

Records and pattern matching are two of the largest features coming in Dart 3.0. I'll talk about what they are, what they're useful for, and how they harmonize with the rest of the Dart language.
Speaker: Bob Nystrom
Watch more:
Watch all the sessions → goo.gle/FlutterForwardYT
Subscribe to Flutter → goo.gle/FlutterYT
#FlutterForward

Наука

Опубликовано:

 

24 янв 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 113   
@DaewonTech
@DaewonTech Год назад
⛱ Summary 1:54 Multiple Returns 6:09 Control Flow in Argument Lists 8:26 JSON Destructuring 10:28 Usable Switches 13:43 Object Destructuring 15:28 Functional Style Coding
@tomchapman128
@tomchapman128 Год назад
Switch expressions are a great addition! Love them in C# and really appreciate them in Dart now!
@AnthonyBullard
@AnthonyBullard Год назад
Thank you Bob (and of course the rest of the Dart team) for finally bringing this and tuples(err, records) to the language. I know I bugged you all about these features a lot all the way back in 2019. This goes to show that Dart at 3.0 will be the most improved language over the last five years
@AnthonyBullard
@AnthonyBullard Год назад
Oh, and I loved Crafting Interpreters
@AnthonyBullard
@AnthonyBullard Год назад
Oh, and thank you for value semantics! That really makes my day. Now only value classes are missing 😉
@dillonnys7707
@dillonnys7707 Год назад
Thanks for your hard work, Bob, and to everyone on your team! Really looking forward to playing with these features 😃
@yonoseespanol
@yonoseespanol Год назад
Dang -- switch case pattern matching is awesome. Very impressed!
@keylinwu4483
@keylinwu4483 Год назад
Thank you for all these improvements! Architecture and structure in dart projects it's every new feature more powerful, clean, and beautiful! Coming from Swift, pattern matching and sealed unions is a crucial language features, and I've been missing that a lot! Thanks again!! Happy and can't wait to try all this!🤩
@Pesthuf
@Pesthuf Год назад
Ah, ADTs! I've liked Dart before, but all these features really make it way better. The language deserves better than to be regarded as merely "the language Flutter apps are written in" - I think it ticks pretty much all the boxes of what I want in a language and how it can be deployed.
@merthyr1831
@merthyr1831 Год назад
Yes! I love dart so much. I wish more people appreciated it outside of Flutter :)
@MarcusTwichel
@MarcusTwichel Год назад
Bob! I learned how compliers work from your book in my senior year compiler course, and now watching you talk about ASTs in the real world is so fulfilling ☺ thank you for all the hard work and an amazing language 💯
@safiussifat
@safiussifat Год назад
what is the name of the book?
@AnthonyBullard
@AnthonyBullard Год назад
@Safius Silat Crafting Interpreters
@safiussifat
@safiussifat Год назад
@@AnthonyBullard thank you
@truthmatters7573
@truthmatters7573 Год назад
Can't wait for Dart 3 to ship! :D Great work all of you
@trymnilsen549
@trymnilsen549 Год назад
Thanks bob and rest of the team, excited for it!
@prerakmann1418
@prerakmann1418 Год назад
Damn, this just made 2023 the best year 🔥
@hyungtaecf
@hyungtaecf Год назад
I simply love it! This is so useful in so many ways! Thanks for your hard work!!
@esc4p3EP
@esc4p3EP Год назад
At last! I've been wanting comparison in switches since Dart 1. Thanks guys! 👍
@bselwesiuk
@bselwesiuk Год назад
Such an amazing job by the Dart team, thank you!
@guildem
@guildem Год назад
Finally, tuples, and switch returning value like Rust. this is great !
@voncth5791
@voncth5791 Год назад
Thank for your amazing work dart folks!
@infinitezymalny
@infinitezymalny Год назад
Wow, json pattern matching is amazing! It will simplify work with json.
@souljorn1
@souljorn1 Год назад
Great work and presentation. This all looks amazing.
@rahuldange
@rahuldange Год назад
Just one word. Amazing!!!!💙
@FilipePratadeLima
@FilipePratadeLima Год назад
This is awesome... Im falling in love with Dart after so many years in Typescript (won't even mention Javascript) Land. Thank you.
@thanhdatvo0
@thanhdatvo0 Год назад
We love this man! now we can make function return error and exception, same as golang and rust!
@aldeywahyuputra5719
@aldeywahyuputra5719 Год назад
12:42 YESSS!!!! THIS IS SO AWESOME!!! OH THANK YOU DART TEAM FOR SWITCH AS EXPRESSION, ILYSM!!! ❤❤❤❤
@jaweene
@jaweene Год назад
Some of these features are very practical!
@danvilela
@danvilela Год назад
I LOVE THIS!! Thanks Dart team!!!
@richardambler
@richardambler Год назад
I'm already drooling. Exciting times!
@Gabriel_Bento
@Gabriel_Bento 8 месяцев назад
That's really incredible! Today I've just started reading his book and for my surprise, i click in a Flutter video and guess who is hosting? The GOAT himself 👏🏻👏🏻
@WilsonSilva90
@WilsonSilva90 Год назад
Hey, we got Bob Nystrom on our team! I love his Game Programming Patterns book. This is so cool 💪🏾
@thomasjarvstrand1511
@thomasjarvstrand1511 Год назад
Wow. Just wow. Can't wait!
@akay5042
@akay5042 Год назад
I can already see pattern matching and sealed classes optimising my current code. Thanks!
@irhasdev
@irhasdev Год назад
Is so amazing to see the Dart lang developer are also music instrument developer
@SEGVeenstra
@SEGVeenstra Год назад
I cannot believe how exited I am for these features. (Thx Bob for explaining it so well!) Is this how people feel when watching tv and their sports team is winning?
@AlexanderMazuruk
@AlexanderMazuruk Год назад
Awesome stuff! Thanks
@felipeemidio7240
@felipeemidio7240 Год назад
Man... that's... just... beautiful!!
@GJJ2019
@GJJ2019 Год назад
this some awesome stuff cant wait :)
@CoderJava
@CoderJava Год назад
This is so cool. I love it.
@slyblood85
@slyblood85 9 месяцев назад
Dudes got a pretty sick setup
@Walid-bv9vy
@Walid-bv9vy Год назад
i appreciate your work
@elpitbullhouse
@elpitbullhouse 3 месяца назад
This is 🔥🔥!!
@saicharanmarrivada5077
@saicharanmarrivada5077 7 месяцев назад
Crafting Interpreters is the best book I have ever read
@aislanarislou
@aislanarislou Год назад
This is one of the awesome things I was missing in Dart. Now I'm hopefully waiting for Pipes to be part of Dart as well, so we can make really awesome and readable codebases that Dart deserves.
@yonoseespanol
@yonoseespanol Год назад
You can use pipe semantics via operator overloading. Not an exact fix..
@aislanarislou
@aislanarislou Год назад
@@yonoseespanol can you to exemplify this approach ?
@noursalman932
@noursalman932 Год назад
So excited for conditional arguments
@blablablabla29382
@blablablabla29382 Год назад
Nice voice quality, ty !
@philosophia5577
@philosophia5577 2 месяца назад
Incredible!
@greglee7708
@greglee7708 Год назад
Functional programming was always my favourite
@web3tel
@web3tel Год назад
it is amazing, thank you!
@rafaelfranco7643
@rafaelfranco7643 Год назад
awesome!!!
@alurma
@alurma Год назад
Beautiful
@user-xm1sg2mf5r
@user-xm1sg2mf5r Год назад
I love it!!!! ❤️ 😍
@fibulawars
@fibulawars Год назад
I like this guy
@0xba1
@0xba1 Год назад
Love everything about this, except the $1 and $2 indexing for records, gives me "bad feelings". Love it, can't wait!
@qG0L0r6W
@qG0L0r6W Год назад
It's on purpose. If you're not using destructuring to access the properties without names, you better give them proper names, otherwise it's going to be confusing regarding of whether it's $1, _1, first, second, etc.
@GeorgeNoiseless
@GeorgeNoiseless Год назад
Having positional access as an option is quite sensible
@andreygritsay762
@andreygritsay762 Год назад
@@qG0L0r6W but why use dollar sign and not just numbers?
@iGhostr
@iGhostr Год назад
Why it's just 1 or 2 dollars... quite cheap if you ask me
@jonathanduck5333
@jonathanduck5333 Год назад
@@andreygritsay762 I also wonder why start at 1 and not at 0 as is usual in programming
@kerandonovan7255
@kerandonovan7255 Год назад
Awesome!
@greatestuff
@greatestuff 2 месяца назад
2:00 Multiple Returns 6:22 Control Flow In Argument Lists 10:28 Usable Switches 13:36 Object Destructuring 15:30 Functional-Style Programming
@jalalokbi2875
@jalalokbi2875 Год назад
That's great news :)
@user-qz3nx4xy8c
@user-qz3nx4xy8c 14 часов назад
It's easy to make a compiler now!
@YukiAttano
@YukiAttano Год назад
Isn't the last mentioned part "functional-style programming", where we are using the sealed classes in switch case operations, the same as doing "if else" with some compiler sugar? or do they generate an enum in the background for matching the right type? (It's a performance question, do we have the casting overhead on all checks?)
@kevinchadwick8993
@kevinchadwick8993 Год назад
I think I will try to move case expressions to where case statements are allowed as it is much more readable. I love the case statements now, they remind me of my favourite language Ada. I love the data validation options. Ada has a Valid check for records. Pattern matching seems more flexible but can you get it wrong?
@r.i.c.o9820
@r.i.c.o9820 Год назад
Sounds interesting
@XSmile2008
@XSmile2008 Год назад
Finally! In 2023 we finally can use `when` like statement that was added in Kotlin in around 2012)
@loclethai
@loclethai Год назад
thanks
@zark4711
@zark4711 Год назад
For ADTs I would have liked the enums with associated values approach from Swift more instead of subclassing. Haskells handels them beautifully as there is not difference between enum and class/struct. But then you have all this OO in other languages and somehow need to cope with it. Kotlin also uses subclassing as a solution, it is a little clumsy, but it works. For Dart < 3 I implemented classes, that have an enum for the case and a bunch of optional variables - only one filled for the appropriate case - which would be tedious, if I wasn't using Sourcery for generating all this. It is good to finally support ADTs in any way.
@alurma
@alurma Год назад
Cool! Two questions: 1) Does this essentially make enums unnecessary? I understand that backwards compatibility may mean that they stay in the language. 2) Is Haskell style pattern matching supported, allowing to match both parts and the whole thing? Haskell working example: Input: let a@(b : c) = [1, 2] in (a,b,c) Output: ([1,2],1,[2])
@leanghenglim
@leanghenglim Год назад
Ugh, I just got schooled around unnecessary switch breaks. You mean to tell me I didn't need to use it all these time... they are quite annoying. Lol
@msh_dev
@msh_dev Год назад
What about Static meta programming?
@jonathan-dias
@jonathan-dias Год назад
will come after Dart 3. From the issue they say they will probably release a beta of metaprogramming later this year
@msh_dev
@msh_dev Год назад
@@jonathan-dias What do you think will static meta programming will help a lot of developers.
@jonathan-dias
@jonathan-dias Год назад
@@msh_dev definitely.
@holthuizenoemoet591
@holthuizenoemoet591 Год назад
I really like Dart to get more populair for general computing, like a more robust Typescript alternative
@deniszavarzin2768
@deniszavarzin2768 Год назад
With pattern matching soon we will see new generic features and Prisma-like ORM. This is amazing.
@anujsaini7846
@anujsaini7846 Год назад
can we use records as tuple for passing data to riverpod providers using family?
@ElteHupkes
@ElteHupkes Год назад
I see no reason why not, I think they're going to be very useful for this indeed.
@samueladole6074
@samueladole6074 Год назад
So much Gold in Dart
@bernaferrari
@bernaferrari Год назад
I don't understand how "when" is different from "&&", how to "case" the if, and how :key works, is that the name of the return value?
@prerakmann1418
@prerakmann1418 Год назад
Can Records be extracted to a Typedef?
@deniszavarzin2768
@deniszavarzin2768 Год назад
What font is used in this slides?
@catbb
@catbb Год назад
nothing about destructuring assignment ?
@edenassos
@edenassos Год назад
I would rather be able to use Rust with Flutter.
@saiphaneeshk.h.5482
@saiphaneeshk.h.5482 Год назад
Will there be any stable framework for dart backend?
@Voltra_
@Voltra_ Год назад
Sounds great, but would have expected something closer to Haskell or Rust to be able to finally get rid of some of the weird codegen for proper BLoC implementations
@weathercontrol0
@weathercontrol0 Год назад
Still waiting for union types
@evgeniykalaganov6753
@evgeniykalaganov6753 Год назад
1. destructuring variables and objects just -stealed- borrowed from Kotlin :), 2. that “awesome” proposal about …() for widget parameters is really ugly, 3. destructuring json looks cool, 4. switch returning a result looks great (thanks Kotlin)
@nunebhargav
@nunebhargav Год назад
When Dart adopts Rust features 🔥🔥
@richardambler
@richardambler Год назад
Actually, these are features that have existed in various languages, such as the ML family of languages, for a long time. I think what we're seeing is a case of modern programming languages converging to support the same set of great features that have arisen in different languages at different times over the past 50 years or so.
@user-tv4kh4pc7s
@user-tv4kh4pc7s Год назад
Норм боб
@meyeti5422
@meyeti5422 Год назад
ranges
@arslanyousaf2426
@arslanyousaf2426 Месяц назад
who is using pattern and records in their code
@thatGeorgeR
@thatGeorgeR Год назад
Why naming tuples "records"? To confuse users of other languages? You go C# way in naming things and this is not something good.
@joranmulderij
@joranmulderij Год назад
Because they are not tuples
@erlangparasu6339
@erlangparasu6339 Год назад
Rust
@markonovakovic3838
@markonovakovic3838 Год назад
as F# lover I can say that some of this is pretty ugly.... but am happy that it is coming. in case am using Dart (I hope not honestly) by the time 3.0 comes along I would definitely be happy about it. this is definitely couple of years too late tho
@jeroboam4486
@jeroboam4486 Год назад
Very good presentation, however I'm saddened that Dart is falling in the same trap than C#: over burdening the language with syntactic sugar, functional elements etc to 1) appease the 5% of language snobs that demand these features and 2) justify the Dart team salaries. Dart isn't my main language so I don't code frequently in it. It started as a very simple language that wasn't getting in my way. But every time I come back to it more useless stuff has been added. Sometimes I spend more time thinking about the language than my code. More isn't better.
@baggern
@baggern Год назад
lmao cope
@xmanreturn
@xmanreturn Год назад
If it isn't your main language why do you care I think the feature added will be useful for sure
@jeroboam4486
@jeroboam4486 Год назад
@@xmanreturn The fact it's not my main language doesn't mean I don't use it. And it's quite confusing when I do use it.
@user-sl7oc7tg4t
@user-sl7oc7tg4t Год назад
Cool! Thanks for your job! w.r.t. for loop over Map.entries, I think it makes more simple and intuitive to just yield Record (key, value) than MapEntry. Anyway, can't wait for Dart 3.0 on stable channel!
@m00ni
@m00ni Год назад
Ideally, yes, but that would require a potentially breaking change to the Map interface, which is harder. We have ideas on how to make this even nicer.
@user-sl7oc7tg4t
@user-sl7oc7tg4t Год назад
@@m00ni In my opinion, there are two possibilities; add a new getter 'records' to Map or MapEntry inherits Record (K, V), but the former would be duplicated method, while the latter, I don't know whether it returns (key, value) by inheriting. I'm looking forward to your ideas on next announcement!!
@GeorgeNoiseless
@GeorgeNoiseless Год назад
YES, finally. Thank You! It never ceases to amaze me how close Dart is to Python in many respects. For me personally that is a massive positive. Getting sidetracked a bit further Python even has a GUI library (widget wrapper) that seems to borrow somewhat from Flutter -- PySimpleGUI.
Далее
Dart 3 Records Are Awesome
4:31
Просмотров 13 тыс.
Patterns #DecodingFlutter
8:00
Просмотров 36 тыс.
Does size matter? BEACH EDITION
00:32
Просмотров 7 млн
Why null safety? | Session
15:14
Просмотров 38 тыс.
How to build a RenderObject - Flutter Build Show
17:57
Top cloud development tips for Flutter developers
18:02
Pattern Matching in Dart 3 is Powerful!
7:15
Просмотров 10 тыс.
Quick start to building a game in Flutter
53:47
Просмотров 233 тыс.
10 Design Patterns Explained in 10 Minutes
11:04
Просмотров 2,2 млн
What's New in Dart 3?
30:09
Просмотров 28 тыс.
Сравнили apple и xiaomi!
0:21
Просмотров 52 тыс.
Как разблокировать айфон?
0:27
Просмотров 149 тыс.
ИГРОВОВЫЙ НОУТ ASUS ЗА 57 тысяч
25:33