рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд░реВрдмреА рдХреЗ рд▓реЗрдЦрдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкрдврд╝реЗ, рдпреБрдХрд┐рд╣рд┐рд░реЛ рдорд╛рддреНрд╕реБрдореЛрддреЛ, рд░реВрдмреАрдХреЛрдирдл 2010 рдкрд░, рдЙрдирдХреЗ рдЬрд╛рдкрд╛рдиреА рднрд╛рд╖рд╛ рдХреЗ рдмреНрд▓реЙрдЧ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖред рдкрд╣рд▓рд╛ рднрд╛рдЧ рдкрд┐рдЫрд▓реЗ рд░реВрдмреА рдХреЙрдиреНрдл рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЕрд╡рд▓реЛрдХрди рд╣реИ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред
рдЬрд╛рдкрд╛рдиреА рд╕реЗ рд╡реНрд▓рд╛рджрд┐рдореАрд░ рд╕рджреЛрд╡рдирд┐рдХреЛрд╡ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджредрд░реВрдмреА рдХрд╛ рднрд╡рд┐рд╖реНрдп: рд░реВрдмреА 2.0
рдЗрд╕ рдмрд╛рд░ рдореИрдВ рд░реВрдмреА рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдирдП рдлреАрдЪрд░ рдкреЗрд╢ рдХрд░реВрдВрдЧрд╛:
- рд▓рдХреНрд╖рдг 1
- рд╡рд┐рдзрд┐ рд╕рдВрдпреЛрдЬрди
- рдирд╛рдорд┐рдд рддрд░реНрдХ
- рдирд╛рдорд╕реНрдерд╛рди
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрднреА рддрдХ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐:
- рдпреЗ рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рджрд┐рди рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдХрд░рдирд╛ рдЬрд░реВрд░реА рдерд╛ред
- рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреНрд░рдВрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИред
1 рдиреЛрдЯ рдкреНрд░рддрд┐ред: рдЧреИрд░-рддреБрдЪреНрдЫ рддрдХрдиреАрдХреА рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдирд╛рдо рдФрд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХрд╛ рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛ред
рдЯрд╛рдЗрдк
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг:
рдкреНрд░рдХрд╛рд░, "рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдХреЛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╡реИрдЪрд╛рд░рд┐рдХ рдореЙрдбрд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ
рдпрд╣ рд▓рдЧрднрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рдирдпрд╛ рднрд╛рд╖рд╛ рддрддреНрд╡ - рдкреНрд░рдХрд╛рд░ - рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рдЙрдк-рдкреНрд░рдЬрд╛рддрд┐ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЙрдбреНрдпреВрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд╢реНрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ [рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ - рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕ред]ред рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдорд╛рд╡реЗрд╢ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:
- рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИред
- рдпрджрд┐ рдЙрдирдХреЗ рдХреНрд░рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЦрд░рд╛рдмреА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред
- рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдореВрд▓ рд╡рд┐рдзрд┐ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗред
рдЬрдм рд╕рдорд╛рд╡реЗрд╢ рдХреЛ рдХрдИ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред
рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдп рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: [рдЬрд╛рдирдмреВрдЭрдХрд░] рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐, рдЖрдХрд╕реНрдорд┐рдХ рд╕рдВрдпреЛрдЧ (рдирд╛рдо рд╕рдВрдШрд░реНрд╖), рдпрд╛ рджреЛрдиреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рд╡рд┐рдзрд┐, рдФрд░ рдЙрдирдХреЗ рдирд╛рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХрд╛ рдХреНрд░рдо рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдорд┐рд▓рд╛рди рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреА рдЦреЛрдЬ рдХрд╛ рдХреНрд░рдо рдЕрдХреНрд╕рд░ рдкреНрд░рддрд┐рд░реВрдкрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
module American attr_accessor :address end module Japanese attr_accessor :address end class JapaneseAmerican include American include Japanese end JapaneseAmerican.new.address
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐ рдЕрдореЗрд░рд┐рдХреА рдФрд░ рдЬрд╛рдкрд╛рдиреА рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдпрд╛ рдЧрд▓рддреА рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдгред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдЕрдиреБрд░реВрдк рддрд░реАрдХреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХреНрд░рдо рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд" рд░реВрдмрд┐рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЬрд╛рдкрд╛рдиреА рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкрддрд╛ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд░реВрдмреА [MRI 1.9] рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ "рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЛ рдмрд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рдореВрд▓ рд╡рд░реНрдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛ" (рд▓реЗрдЦрдХ рдиреЛрдЯ: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ MacRuby рдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдерд╛ред 1.9 рдореЗрдВ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗ рд▓рд┐рдПред YARV рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдмреАрдЪ рджреЛ рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рди рджреЗред) рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдРрд╕реЗ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдореВрд▓ рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдпрд╣ рдЙрди рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рдХреЗ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╡реЗ рдЕрдм рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рд╕рд╣рд┐рдд рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ (рднрд╛рдЧ рдореЗрдВ) рдХреЛ рдорд┐рдХреНрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпреЛрдВ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐:
- рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ / рдкреНрд▓рдЧ-рдЗрди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдЬрдм рдЖрдк рдореЙрдбреНрдпреВрд▓ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкреВрд░реНрд╡рдЬ рдирд╣реАрдВ рдмрдирддреЗред
- рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдирд╛рдо рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдирдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
- рд▓рдЧрд╛рддрд╛рд░ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд┐рд╢реНрд░рдг рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╡рд┐рдзрд┐ рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдореЙрдбреНрдпреВрд▓ рдЕрднреА рднреА рдПрдХ рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред (рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реМрднрд╛рдЧреНрдпред * рдореБрд╕реНрдХрд░рд╛рд╣рдЯ *)
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдорд┐рд╢реНрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
module American attr_accessor :address end module Japanese attr_accessor :address end class JapaneseAmerican mix American mix Japanese
рдорд┐рд╢реНрд░рдг рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдо рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
class JapaneseAmerican mix American, :address => :us_address mix Japanese, :address => :jp_address end
рдЕрдм рд╡рд┐рдзрд┐рдпрд╛рдБ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдореЛрдВ рд╕реЗ рдорд┐рд▓реАрдВред
рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВ, рднрд╛рд╖рд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ? рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ рдЫреЛрдЯрд╛ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред (рдиреЛрдЯ perevред: рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рд╕рднреА рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпрд╛рдВ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕реЗ "example_variable_defined?") рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдирд╛рдо рд╣реИрдВред
рдирд╛рдХрд╛рдбрд╛ [рд╕рдВрднрд╡рдд: рд░реВрдмреА рдХрд░реНрдиреЗрд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдирдХреБрдпреБрд╢реА рдирд╛рдХрд╛рдбрд╛] рдиреЗ рд░реВрдмреАрдХрд┐рдЧреА [рдЬрд╛рдкрд╛рдиреА рд░реВрдмреА рд╕рдореНрдореЗрд▓рди] рдореЗрдВ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рдордп рдорд┐рд╢реНрд░рдг рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд▓рдХреНрд╖рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреИрдЪ рддреИрдпрд╛рд░ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛:
- [рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рджреЛ рдмрд┐рдВрджреБ рдереЗ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдЦреЗрдж рд╣реИред]
- рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдЪрд░ рдХреЗ рдмреАрдЪ рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдмрдЪреНрдЪреЗ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рджрд╕реНрдп рдЪрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рджрд╕реНрдп рдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╛рдВрдЫрд┐рдд рдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдирд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ред 1.9 рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рд╣реИ, рдЬреЛ рдлреЙрд░реНрдо рдХреЗ рд╕рджрд╕реНрдп рдЪрд░ рдХреЛ @_foo рдпрд╛ @__foo рдирд┐рдЬреА рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛, рд╢рд╛рдпрдж, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдорд┐рд╢реНрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд┐рдзрд┐ рд╕рдВрдпреЛрдЬрди
RubyKaigi рдореЗрдВ, рдорд┐рд╢реНрд░рдг рд╡рд┐рдзрд┐ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдиреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд╣рд╛рдиреА рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ "рд░реИрдк" рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╡рд┐рдзрд┐ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдереА, рдФрд░ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ред
рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдкреНрд░реАрдкреЗрдВрдб рдкрджреНрдзрддрд┐ рд╢реБрд░реВ рдХреА рдЬрд╛рдПред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╡рд╛рд▓ рд╕реБрдирддрд╛ рд╣реВрдВ "рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдорд┐рд╢реНрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛, рдЕрдм рд╣рдореЗрдВ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?", рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП "рдХреНрд▓рд╛рд╕" рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
module Foo def foo p :before super p :after end end class Bar def foo p :foo end prepend Foo end Bar.new.foo
рдЕрдЧрд░ рдлреВ рд╡рд┐рдзрд┐ рдХреЛ рдлреВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ (рдпрд╛ рдореЙрдбреНрдпреВрд▓) рдореЗрдВ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреНрд░реАрдкреЗрдВрдб рдореЙрдбреНрдпреВрд▓ рдлреВ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рдХреЗ рдлреВ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рдкреЗрдЯ рджреЗрдЧрд╛ред
рдкреНрд░реАрдкреЗрдВрдб рдкрджреНрдзрддрд┐ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдпреЗрд╣реБрджрд╛ рдХрд╛рдЯреНрдЬрд╝ рд╕реЗ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд░реЗрд▓ рдбреЗрд╡рд▓рдкрд░ рднреА рд╣реИ; рд╡рд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд░реЗрд▓ рдореЗрдВ alias_method_chain рдХреЗ рд╕рд╛рде рдЙрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдореИрдВ рдЙрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдХреЛрдИ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ T_ICLASS рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд╕реЗ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред
рдирд╛рдорд┐рдд рддрд░реНрдХ
рд▓реЛрдЧ рддрд░реНрдХреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, public_instance_methods рд╡рд┐рдзрд┐ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ рд▓реЗрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдпрджрд┐ рдЧрд▓рдд рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЗ рднреА рд╡рд╛рдкрд╕ рдХрд░реЗрдВ," рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрдВ рд╣рдореЗрд╢рд╛ рдпрд╣ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдЪ рд╣реИред)
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
aClass.public_instance_methods (include_super: false)
рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рд░реВрдмреА 1.9 рдореЗрдВ, рдирд╛рдорд┐рдд рддрд░реНрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рддрд░реНрдХ рд╣реИрдВ, рдФрд░ рд╡реНрдпрд╛рдХрд░рдг рд╡рд┐рд╕реНрддрд╛рд░ рдЬреЛ рдЗрд╕ рдПрдЪрдПрдЪ рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред (рдиреЛрдЯ рдЕрдиреБрд╡рд╛рдж: рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ 1.9 рдореЗрдВ рдЖрдк рдбреА
def a(opts={}); end
рддрд░рд╣ рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
def a(opts={}); end
рдФрд░ рдЗрд╕реЗ
a(go: true, what: "string")
рдЬреИрд╕реЗ
a(go: true, what: "string")
ред
рдирдИ рд╕реБрд╡рд┐рдзрд╛ 2.0 рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдРрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдХреЙрд▓ рдХрд░реЗрдВ:
1.step (by: 2, to: 20) do |i| pi end
рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
def step (by: step, to: limit) ... end
рдмрд╛рдж рдореЗрдВ [рд╕рдореБрджрд╛рдп] рд╣реИрд╢ рд░реВрдк рд▓реЗрддрд╛ рд╣реИ, рдирд╛рдо рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдкреНрд░рднрд╛рд╡ рдореЗрдВ, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкрд░рд┐рд╡рд░реНрддрдиред
рдирд╛рдорд╕реНрдерд╛рди
рдпрджрд┐ рдЖрдк рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╢реБрдЧреЛ рдорд╛рджреЗ рдХреА
рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬреЛ рд░реВрдмреЙрдиреНрдлрд╝ рдкрд░ рднреА рдерд╛ред
рд░реВрдмреА рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рддрдХрдиреАрдХ рдХреЛ рдордВрдХреА рдкреИрдЪрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рдмреНрдж "рдЧреБрд░рд┐рд▓реНрд▓рд╛ рдкреИрдЪрд┐рдВрдЧ" [рдЫрд╛рдкрд╛рдорд╛рд░ - рдЫрд╛рдкрд╛рдорд╛рд░] -> "рдкреИрдЪрд┐рдВрдЧ рдЧреЛрд░рд┐рд▓реНрд▓рд╛" -> "рдмрдВрджрд░ рдкреИрдЪрд┐рдВрдЧ" рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмреЗрд╢рдХ, рдЕрдЧрд░ рд░реВрдмреА рдЬреИрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ, рдХрдХреНрд╖рд╛рдПрдВ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдбреАрдПрдЪрдПрдЪ рдХреА рд░рд┐рдкреЛрд░реНрдЯ [рдбреЗрд╡рд┐рдб рд╣реЗрдиреАрдорд┐рдпрд░ рд╣реИрдирд╕рди, рд░реЗрд▓реНрд╕ рдХреЗ рд▓реЗрдЦрдХ], "рдмрдВрджрд░ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдмрд┐рдирд╛," рдореИрдВ "рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рднрд╡рд┐рд╖реНрдп" рдХрд╣рддрд╛ рд╣реВрдВред [рдпрд╣рд╛рдБ рдореЗрд▓ рдЧрд┐рдмреНрд╕рди рдХрд╛ рдПрдХ рдЙрджреНрдзрд░рдг рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдиреЗ рдЗрд╕реЗ рдорд╛рд╕реНрдЯрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛]ред
рдПрдХ рдУрд░, рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдЕрдЪреНрдЫреА рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ 1 + 2 42 рд╣реЛ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдмрдВрдж рджрд╛рдпрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд░рдЦрдХрд░, рдЖрдк "рдореБрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди" [рдкреИрдЪрд┐рдВрдЧ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛] рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ "рд╕реНрдХреЛрдк" рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЪрдпрдирдХрд░реНрддрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд▓рд╛рд╕рдмреЙрдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕ рдмрд╛рд░, Maeda рдХреЗ рд╕рд╣рдХрд░реНрдореА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЪрдпрдирдХрд░реНрддрд╛ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рд╢реЛрдзрди рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ:
class Integer def / (other) return quo (other) end end p 1 / 2
рдбрд┐рд╡реАрдЬрди рдСрдкрд░реЗрдЯрд░ (/) рдХрд╛ рдПрдХ рд╕рдорд╛рди рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рдг рдПрдХ рддрд░реНрдХрд╕рдВрдЧрдд рдЕрдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдиреЛрдЯ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрд░реНрдХрд╕рдВрдЧрдд рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИ) рдорд╛рдирдХ рдореИрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рдЬреЛ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЕрдзреНрдпрдпрди рдПрдХ рдкрд░рд┐рд╢реЛрдзрди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдирд╛рдо рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ)ред рд╡реНрдпрд╛рдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
module MathN refine Integer do def / (other) return quo (other) end end p 1 / 2
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реЛрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ред рдпрд╣ рдПрдХ рдмрдбрд╝реА рдЙрдкрд▓рдмреНрдзрд┐ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░, MathN 1/2 рддрд░реНрдХрд╕рдВрдЧрдд (1/2), рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ - рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЧрдлрд▓ рд▓реМрдЯрд╛рдПрдЧрд╛ред
рдХреНрд▓рд╛рд╕рдмреЙрдХреНрд╕ рд╢реЛрдзрди рд╕реЗ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ рд╢рд╛рдмреНрджрд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдкрд╣рд▓реЗ рд╣реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХреА рд╣реИ, рдлрд┐рд░ рднреА рд╢реЛрдзрди рдкреНрд░рднрд╛рд╡реА рд╣реИ; рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ, рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХреЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдмреЗрд╢рдХ, рд╢реЛрдзрди рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗред
рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ:
module Rationalize using MathN p 1 / 2
рдпреБрдХреНрддрд┐рд╕рдВрдЧрдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рднреА рдореИрдерди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢реЛрдзрди рд╣реИред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдзрд┐ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░рд░реНрдердХ рд╣реИ, рддреЛ рдЗрд╕реЗ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдЗрд╕ рддрд░рд╣ рд╕реЗ, рд╡рд┐рдзрд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдЬреА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рдиреЛрдЯ perevред: рд░реВрдмреА 1.9 рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рд╡рд┐рдзрд┐ рд╡рд░реНрдЧ рдХреА рд╕рджрд╕реНрдп рд╡рд┐рдзрд┐ рдмрди рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдирд╛ рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред)
class Foo def foo def bar ... end bar
рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди Maeda рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИ; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд░рд┐рд╡рд░реНрддрди рдЬрд▓реНрджреА рд╕реЗ рдореБрдЦреНрдп рдкреЗрдбрд╝ [рдЯреНрд░рдВрдХ] рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм, рдЖрдк рдЗрд╕ рд╢рд╛рдирджрд╛рд░ рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдорд╛рдПрдбрд╛ рдХреЗ рдПрдХ рд╕рд╣рдпреЛрдЧреА рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
PS рдпрд╣ рдЕрдиреБрд╡рд╛рдж рд╕рд░рд▓ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдерд╛, рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд┐рд╕реА рднреА рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░рдВрд╕реА рдХреЛ рдкрд╛рдЧрд▓ рдХрд░ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡рд┐рд╡реЗрдХ рдиреЗ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЙрди рдордирдорд╛рдиреЗ рднрд╛рдЧреЛрдВ рдХреЛ рдкрд╛рда рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдереЗред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХреБрдЫ рдЬреАрд╡рд┐рдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдВрдЧреАред рдФрд░ рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред