рдбрд╛рд░реНрдЯ 2.6 рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ, рднрд╛рд╖рд╛ рдиреЗ рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдп, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреА, рдЬреЛ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдирдП рддрд░реАрдХреЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рд╡реЗ рдХрд┐рд╕ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ?

рдкрд░рд┐рдЪрдп
рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд┐рдВрдереИрдЯрд┐рдХ рд╢реБрдЧрд░ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЕрд▓рдЧ рдЬрдЧрд╣ рдореЗрдВ рдлреИрд▓рд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрд╕-рдкрд╛рд╕ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдбрд╛рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рдЧрдПред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ C #, рдЬрд╛рд╡рд╛ рдЬреИрд╕реЗ рдореИрдирд┐рдлреЛрд▓реНрдб, рд╕реНрд╡рд┐рдлреНрдЯ, рдХреЛрдЯрд▓рд┐рди рдФрд░ рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреИрдЪрдЕрд░реНрд╕ рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЕрднреА рднрдпрд╛рдирдХ рд╣реИ рдФрд░ рдПрдХ рдирдП рд╢рд╛рдВрдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╡рд╣ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 8 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЬрдм рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рдЙрд╕ рд╕рдордп рддрд╛рд░реНрдХрд┐рдХ рдерд╛ред
рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╣реЛ рдЬрд╛рдПрдЧреАред
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдЙрдкрдпреБрдХреНрдд, рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рдореИрдВ рдПрдХ рдирдпрд╛ рдлреНрдпреВрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред
abstract class Future<T> { ... /// Catches any [error] of type [E]. Future<T> onError<E>(FutureOr<T> handleError(E error, StackTrace stack)) => this.catchError(... - ...); } ... }
рдФрд░ рдореИрдВ рдЙрд╕реЗ рдЗрд╕ рддрд░рд╣ рдмреБрд▓рд╛рдКрдВрдЧрд╛:
Future<String> someString = ...; someString.onError((FormatException e, s) => ...).then(...);
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднрд╡рд┐рд╖реНрдп рд╡рд░реНрдЧ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ред рдпрджрд┐ рдореИрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рднреА рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛, рдФрд░ рдХреЛрдИ рднреА рдЕрдиреНрдп рд╡рд░реНрдЧ рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЕрдзреВрд░рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдм рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЦреИрд░, рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
Future<T> onFutureError<T, E>(Future<T> source, FutureOr<T> handleError(E error, StackTrace stack)) => source.catchError(... - ...);
рдФрд░ рдЙрд╕рдХреА рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
Future<String> someString = ...; onFutureError(someString, (FormatException e, s) => ...).then(...);
рдорд╣рд╛рди, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд▓реЗрдХрд┐рди рдпрд╣ рджреБрдЦрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд╣реБрдд рдкрдврд╝рд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред рд╣рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ -рдСрдбрд┐рдВрдЧрд╕реЛрдорд┐рдВрдЧ (); рдпрд╣ рдХреЛрдб рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИред рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЛрдб рдХреЛ рдмреЛрдЭрд┐рд▓ рдФрд░ рдХрдо рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИред
рдлрд┐рд░, рдореИрдВ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рджреВрдВрдЧрд╛ред
class CustomFuture<T> { CustomFuture(Future<T> future) : _wrapper = future; Future<T> _wrapper; Future<T> onError<E>(FutureOr<T> handleError(E error, StackTrace stack)) => _wrapper.catchError(...- ...); }
рдФрд░ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
Future<String> someString = ...; CustomFuture(someString).onError((FormatException e, s) => ...).then(...);
рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ!
рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди
рдЬреИрд╕реЗ рд╣реА рд╣рдо рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 2019 рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛:
extension CustomFuture <T> on Future<T> { Future<T> onError<E>( FutureOr<T> handleError(E error, StackTrace stack)) => this.catchError(...something clever...); }
рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рд▓рдЧреЗрдЧрд╛:
Future<String> someString = ...; someString.onError((FormatException e, s) => ...).then(...);
рд╡рд╣ рд╕рдм рд╣реИ! рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХреЗрд╡рд▓ 5 рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдХреЛрдб рдерд╛ред рдЖрдкред рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЬрд╛рджреВ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рд░реИрдкрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╣рд╛рдпрдХ
рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рд╣реИред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд░рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдХреЛрдИ рд░реИрдкрд░ рдирд╣реАрдВ рд╣реИ
рд╡рд┐рд╕реНрддрд╛рд░ рдбрд┐рдЬрд╛рдЗрди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рдЬреА рдЖрд╡рд░рдг рд╡рд╛рд▓рд╛ рдЖрд╡рд░рдг рд╣реЛред рд▓реЗрдХрд┐рди рд░реИрдкрд░ рдХреНрд▓рд╛рд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ, рдпрд╣ _wrapper рд░реИрдкрд░ рдХреНрд▓рд╛рд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ рдХреНрд▓рд╛рд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рдЖрд╡рд░рдг рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИред
рдЗрдЯреНрд╕ рдСрд▓ рд╕реНрдЯреЗрдЯрд┐рдХ
рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ "рд╕реНрдЯреИрдЯрд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдердбреНрд╕", рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ!
рдбрд╛рд░реНрдЯ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рд╕рдордп рдкрд░ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк user.age (19) рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдпреБ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рджрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдкреВрд░реНрдг рдХреЙрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рд╣реИред
рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ?
рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рддрдм рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╡рд┐рдЬреЗрддрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд┐рдХрдЯрддрдо рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рджрд╕реНрдп рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдХреБрдЫ рдЖрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рдеред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЙрд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдпрд╛ рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
... List list = ...; MyList(list).printlist(); SomeList(list).printlist(); ... extension MyList on List { void printlist() { print(...- ...); } } extension SomeList on List { void printlist() { print(...- ...); } }
рдкрд░рд┐рдгрд╛рдо
- рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИред
- рдЖрдк рддрд░реАрдХреЛрдВ, рдСрдкрд░реЗрдЯрд░реЛрдВ, рдмрд╕рдиреЗ рдФрд░ рдЧреЗрдЯрд░реНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝реАрд▓реНрдб рдирд╣реАрдВред
- рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ - рдЬрдм рдХреЛрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рджрд╕реНрдп рдпрд╛ рдЕрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рд╣реИ, рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реНрдкрд╖реНрдЯ рдХреЙрд▓ рд╕реНрдкрд╖реНрдЯ рдХреЙрд▓ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
- рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд┐рд░ рд╣реИрдВред рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
- рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
- рдПрдХ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЖрдпрд╛рдд рди рдХрд░реЗрдВред
рд╡рд╣ рд╕рдм рд╣реИ! рдЖрдк рдЗрд╕рдХреА рдкреВрд░реА рдХреНрд╖рдорддрд╛ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рд╣рд╛рдВ, рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
рд╡реЗрдмрд╕рд╛рдЗрдЯ рдлрдбрд╝рдлрдбрд╝рд╛рддреА рд╣реИрдбрд╛рд░реНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯрдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдХрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВрдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рдЬрд╣рд╛рдВ рдореИрдВ рдлрд╝реНрд▓рдЯрд░ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рднреА рдирдП рдФрд░ рди рдХреЗрд╡рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ