
рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдУрд╡рд░рд▓реЛрдб рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдХреНрд╖рдорддрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдордЬрдмреВрдд рдпрд╛ рдХрдордЬреЛрд░ рдкрдХреНрд╖ рд╣реИред рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ - рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИред рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?
рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдХрд╛рд▓рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред
рд╕рдВрдЪрд╛рд▓рдХ рдЕрдзрд┐рднрд╛рд░
рддреЛ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╣реИ?
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдСрдкрд░реЗрдЯрд░ рдкрд░рд┐рдЪрд┐рдд "+", "-", "*", "рд╣реИрдВ!" рдФрд░ рдХрдИ рдЕрдиреНрдпред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрднреА-рдХрднреА рдПрдХ рд╣реА рдСрдкрд░реЗрдЯрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ + рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдпреЛрдЬрди рдСрдкрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ)ред рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ - рдпрджрд┐ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрджрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЛ! рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдмреБрд░рд╛рдИ рд╣реИ!
рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╡рд┐рд╖рдп рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдЧрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕реА ++ рдореЗрдВ рдмрджрд▓реА рдЧрдИ рдереА рддрд╛рдХрд┐ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП + рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде)ред
рдореЗрд░реА рд░рд╛рдп рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдЪрд┐рдд рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдЕрдзрд┐рднрд╛рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рд╛рдн рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ: рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ "+" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ?
рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдиреЗ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЬреЛрдбрд╝реА рдЬрд╛рдПрдБред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИ:
Complex result = complex1 + complex2;
... рдФрд░ ...
Complex result = complex1.add(complex2);
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓рдЧрддреА рд╣реИ, рд╣реИ рдирд╛?
рддреЛ, рдХреНрдпрд╛ рд╕реНрдХрд╛рд▓рд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдб рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдЕрдзрд┐рдХ рдареАрдХ рд╣реИ, рдирд╣реАрдВред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЬреЛ рдХреБрдЫ рднреА рдкрдврд╝рддрд╛ рд╣реВрдВ рд╡рд╣ рдмрдХрд╡рд╛рд╕ рд╣реИ? рдпрд╣ рд╕рдмрд╕реЗ рдмреЗрд╡рдХреВрдл рд▓реЗрдЦ рдореИрдВрдиреЗ рдХрднреА рдкрдврд╝рд╛ рд╣реИ! рдореБрдЭреЗ рд╕реНрдХрд╛рд▓рд╛ рд╕реЗ рдирдлрд░рдд рд╣реИред рдмреЗрд╣рддрд░ Algol 68 рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬрд╛рд░реА рд░рдЦреЗрдВред
рдореИрдВ рдмрд╕ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкреВрдЫреВрдВрдЧрд╛, рдореИрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕реНрдХрд╛рд▓рд╛ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХрд╛рд▓рд╛ рдХреЗ рдкрд╛рд╕ рдмрд╕ рдирд╣реАрдВ рд╣реИ!
рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдХреЛрдИ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ? рддреБрдо рдкрд╛рдЧрд▓ рд╣реЛ! рдЗрд╕рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рдореИрдВрдиреЗ "рд╕рдо = 2 + 3" рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрд╛! рд▓реЗрдХрд┐рди рд╕реВрдЪреА рдореЗрдВ "::" рдФрд░ ": /" рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╡реЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ!
рдХрд╛рд╢, рд╡реЗ рдирд╣реАрдВ рд╣реЛрддреЗред рдкреВрд░реЗ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХрд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
sum = 2 + 3
..., рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ RichInt рд╡рд░реНрдЧ рдореЗрдВ + рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде + рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред рдЖрдк рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЛ рднреА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
sum = 2.+(3)
... рдЕрдЧрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рд╛рдБред рдЕрдм рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ред рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рд╡рд╣рд╛рдБ рдкрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд╣реИред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред
class Complex(val real : Double, val imag : Double) { def +(that: Complex) = new Complex(this.real + that.real, this.imag + that.imag) def -(that: Complex) = new Complex(this.real - that.real, this.imag - that.imag) override def toString = real + " + " + imag + "i" } object Complex { def main(args : Array[String]) : Unit = { var a = new Complex(4.0,5.0) var b = new Complex(2.0,3.0) println(a)
рдпрд╣ рд╕рдм рд╢рд╛рдВрдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдСрдкрд░реЗрдЯрд░ рдХреЛ "рдирд╣реАрдВ" ("!") рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ?
рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдФрд░ "+" рдФрд░ "-" рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрд╛рддреНрдордХ рдФрд░ рдЙрдкрд╕рд░реНрдЧ рд╣реИред рд▓реЗрдХрд┐рди рд╕реНрдХрд╛рд▓рд╛ рднреА "+" рдЬреИрд╕реЗ рдЗрдиреНрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реАрдорд┐рдд рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ 4 рдХреЛ рдПрдХреАрдХреГрдд рдЙрдкрд╕рд░реНрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "+", "-", "!" рдФрд░ "~"ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ unary_!, Unary_ ~, рдЖрджрд┐ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП ~ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдорд╛рдкрд╛рдВрдХ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
class Complex(val real : Double, val imag : Double) {
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛
рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ "+" рдЬреИрд╕реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░реЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреБрдЫ рдРрд╕рд╛ рди рдХрд░ рд╕рдХреЗ рдЬрд┐рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдпрд╛ рдЬреЛрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХреЗред
рдореВрд▓ рд▓реЗрдЦ - рдЯреЙрдо рдЬреЗрдлрд░реА, рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ "рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ"