рдлреИрдВрдЯрдо рдлреНрд░реИрдВрдХ рднрд╛рдЗрдпреЛрдВ (
рдмреНрд░рд╛рдпрди рдлреНрд░реИрдВрдХ, рдПрдВрдбреА рдлреНрд░реИрдВрдХ ) рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб, рд╕реНрдЯреЗрдЯрд┐рдХ-рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖рд╛ рд╣реИред рдлреИрдВрдЯрдо рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, Fantom рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛ рд░рдирдЯрд╛рдЗрдо рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ (JRE), .NET рдХреЙрдорди рд▓реИрдВрдЧреНрд╡реЗрдЬ рд░рдирдЯрд╛рдЗрдо (CLR) рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
class HelloWorld { static Void main() { echo("Hello, World!") } }
рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА
рдлреЗрдВрдЯрдо рдмрдирд╛рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдирд╛ рдерд╛ рдЬреЛ рджреЛ рдЬрд╛рд╡рд╛ рд╡реАрдПрдо рдФрд░ .NET рд╕реАрдПрд▓рдЖрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдВрдкрдирд┐рдпрд╛рдВ рдЗрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рддреА рд╣реИрдВред рдкрд╛рдпрдерди рдФрд░ рд░реВрдмреА рдЬреИрд╕реА рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛рдПрдВ рднреА рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдЪрд▓рддреА рд╣реИрдВред рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╕реЗ рджреВрд╕рд░реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрдВрдЯрдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрдирдЯреЙрдо рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ fcode рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдмрд╛рдЗрдЯрдХреЛрдб рдЬрд┐рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдпрд╛ рдЖрдИрдПрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╕рд╛рд░рдг рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдлреЗрдВрдЯрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рд╡реАрдПрдо рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛ рдорддрд▓рдм рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛ рдпрд╛ .NET рд╕реЗ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реБрдкрд░рдмреЙрдо рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдлреЗрдВрдЯрдо рд╡рд╣рд╛рдБ рдирд╣реАрдВ рд░реБрдХрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рдХреНрд╖реНрдп iPhone,
LLVM ,
рддреЛрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╣реИрдВред
рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдПрдкреАрдЖрдИ
рдпрджреНрдпрдкрд┐ рд╡реЗ рд╕реНрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ (рд╕реМрдВрджрд░реНрдп рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреА рдЖрдВрдЦреЛрдВ рдореЗрдВ рд╣реИ), рдлреЗрдВрдЯрдо рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреИрдВрдЯрдо рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред рдЬрд╛рд╡рд╛ рдФрд░ .NET рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЫреЛрдЯреА рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЕрдореВрд░реНрдд рдЗрдХрд╛рдЗрдпреЛрдВ (рдХрдХреНрд╖рд╛рдУрдВ) рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реИред рдлреИрдВрдЯрдо рдХрд╛ рд╡рд┐рдкрд░реАрдд рджрд░реНрд╢рди рд╣реИ - рдЙрдирдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдк рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд▓реЗрдХрд┐рди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг
java.io рдкреИрдХреЗрдЬ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 60 рд╕реЗ рдЕрдзрд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
рдлреЗрдВрдЯрдо рдореЗрдВ , рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдЪрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ:
рдлрд╝рд╛рдЗрд▓ ,
рдмреБрдлрд╝ ,
рдЗрдирд╕реНрдЯреНрд░реАрдо рдФрд░
рдЖрдЙрдЯрд╕реНрдЯреНрд░реАрдо ред рдФрд░ рдЗрд╕ рддрд░рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрддрд╛ рд╣реИ:
Void textIO() { f := File(`text-io.txt`) // write text file (overwrites existing) f.out.printLine("hello").close // append to existing text file f.out(true).printLine("world").close // read text file as big string echo(f.readAllStr) // read text file into list of lines echo(f.readAllLines) // read text file, line by line f.eachLine |line| { echo(line) } }
рдЯрд╛рдЗрдкрд┐рдВрдЧ
рдкреВрд░реА рджреБрдирд┐рдпрд╛ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рдорд░реНрдердХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЧрдИ рд╣реИред рдлреИрдВрдЯрдо рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдкрдХреНрд╖ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдордзреНрдп рдЪреБрдирддреЗ рд╣реИрдВ - рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдордзреНрдпрдо рджреГрд╖реНрдЯрд┐рдХреЛрдгред
рд╕реНрдереИрддрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдкрдХреНрд╖ рд╕реЗ, рдлреЗрдВрдЯрдо рдХреЛ рдлрд╝реАрд▓реНрдбреНрд╕ рдФрд░ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдзрд┐ рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЗ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЛрдб рдореЗрдВ рдЕрдХреНрд╕рд░ рдпрд╣ рдХреЗрд╡рд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдлреИрдВрдЯрдо рдореЗрдВ рдЯрд╛рдЗрдк рдЗрдВрдлрд╝реЗрдХреНрд╢рди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдореЗрдВ рдмреЛрдЭрд┐рд▓ рд╢рдмреНрджрдХреЛрд╢ рдирд┐рд░реНрдорд╛рдг:
Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "one"); map.put(2, "two");
рдлреИрдВрдЯрдо рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░:
map := [1: "one", 2: "two"]
рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлреИрдВрдЯрдо рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдк "ред" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд▓ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреБрд╢рд▓ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреЙрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "->" рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "->" рдХреЛ
Obj.trap рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬрд╛рд▓ "" рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдкрд░ред рдЖрдк рдЕрдкрдиреЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
if (a is Str) { return a->toInt } obj->foo // obj.trap("foo", [,]) obj->foo(2, 3) // obj.trap("foo", [2, 3]) obj->foo = 7 // obj.trap("foo", [7])
рдЬреЗрдирд░рд┐рдХ
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдлреЗрдВрдЯрдо рдХреЛрдб рдХреЛ рдХрдо рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА # рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рдЬреЗрдирд░рд┐рдХ рдЗрд╕ рдкреНрд░рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХреАрдХреГрдд рдкреНрд░рдгрд╛рд▓реА рд╕реАрдзреЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлреЗрдВрдЯрдо
рдЕрдм рд▓рд╛рдн рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдлреИрдВрдЯрдо рдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЗрдирд░рд┐рдХ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╕рдорд░реНрдерди рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддреАрди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдХреНрд╖рд╛рдПрдВ рд╕реВрдЪреА, рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдлрд╝рдВрдХ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Fantom рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рдПрдХ рд╕реВрдЪреА Int [] рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИред рдлреИрдВрдЯрдо рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдмреАрдЪ рдореЗрдВ рд╣реИрдВ: рдЬреЗрдиреЗрд░рд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЬрдЯрд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ред
рджреЛрд╖
рдХрд┐рд╕реА рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдХреНрд╕рд░ рд╣рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдЗрд╕ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд╛ рдЕрд░реНрде рд╣реИ рдореЙрдбрд▓рд┐рдВрдЧ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ред рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА # рдПрдХ рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдХрдХреНрд╖рд╛рдПрдВ рдПрдХрд▓ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рдХрдИ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЛ рд░реЛрдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред
рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реА # рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджреЗрдиреЗ рдХреЗ рдЕрдкрдиреЗ рдПрдХрдорд╛рддреНрд░ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рд╣реИ, рддреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдЭ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рджреЛ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рд░рд┐рд╕ рд╣реИрдВ рдФрд░ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреЛрд╣рд░рд╛рд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред
рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА # рдХреНрд▓рд╛рд╕ / рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВред рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХрдИ рджрд░рд╡рд╛рдЬреЗ рдЦреЛрд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдмрд▓реНрдХрд┐ рдЕрдкреНрд░рд┐рдп рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред рдлреИрдВрдЯрдо рдлрд┐рд░ рд╕реЗ рдордзреНрдп рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдорд┐рдХреНрд╕рд┐рдВрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд╢реБрджреНрдзрддрд╛рдПрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ рдЬреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХрд╛рдзрд┐рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП,
рдХреБрдЫ рдХрд╛рд░реНрдп , рдЬреИрд╕реЗ рд░рд╛рдЬреНрдп рднрдВрдбрд╛рд░рдг рдХреНрд╖реЗрддреНрд░, рдПрдХ рдЕрд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдЕрд╢реБрджреНрдзрд┐рдпрд╛рдБ:
mixin Audio { abstract Int volume Void incrementVolume() { volume += 1 } Void decrementVolume() { volume -= 1 } } class Television : Audio { override Int volume := 0 }
рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдЬрд╛рд╡рд╛ рд╕рдордХрдХреНрд╖ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛
рдЖрдзреБрдирд┐рдХрддрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рд╣реИ рдЬреЛ рдПрдХ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЬрд╛рд╡рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рджрд╢рдХ рдореЗрдВ рд╣рдо
рдХреНрд▓рд╛рд╕рдкрд╛рде рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд░рдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреНрд▓рд╛рд╕рдкрд╛рде рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рд╡рд╛ рдиреЗ рдЧрд▓рдд рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рдЖрдХрд╛рд░ рдореЗрдВ 44Mb рдХреЗ J2SE рдореЛрдиреЛрд▓рд┐рде рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ред
.NET рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрд╣реБрдд рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░, GAC рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд╛рд╡рд╛ рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рд╡реЗ рдЬрд╝рд┐рдк рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рд╛рджрдЧреА рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ DLL рдореЗрдВ рдкреИрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЕрднреА рднреА рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдкреЗрдпрд░ рдкрд╛рд░реНрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдлреЗрдВрдЯрдо рдореЗрдВ, рд╕рдм рдХреБрдЫ рдкреЙрдбреНрд╕ рдирд╛рдордХ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ, рдПрдХ рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрдЯрд╛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓
/meta.props рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкреЙрдб.рдирд╛рдо, рдкреЙрдб.рд╡рд░реНрд╕рди, рдкреЙрдб.рдкреЗрдВрдбреНрд╕, рдФрд░
рдЗрд╕реА рддрд░рд╣ рдХреА-рд╡реИрд▓реНрдпреВ рдПрдВрдЯреНрд░реА рд╣реИред рдлрд▓реА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдЙрд╕рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЗ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рдЬрд╛рд╡рд╛ рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдмреЗрдореЗрд▓ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрд▓рд╛рд╕ рдХрд┐рд╕ рдЬрд╛рд░ рдореЗрдВ рд░рд╣рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╣рд╛рдВ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред
рдлреИрдВрдЯрдо рдиреЗ рдПрдХ рд╕рд░рд▓ рдирд╛рдо рдкреНрд░рдмрдВрдзрди рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдпрд╛: рдирд╛рдо рдореЗрдВ рддреАрди рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реНрддрд░ "рдлрд▓реА :: type.slot", рдЕрд░реНрдерд╛рддреНред рдкрд╣рд▓реЗ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрд╢рд╛ рдкреЙрдб рдХрд╛ рдирд╛рдо, рдлрд┐рд░ рдЯрд╛рдЗрдк рдирд╛рдо (рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ) рдФрд░ рдлрд┐рд░ рд╕реНрд▓реЙрдЯ (рд╡рд┐рдзрд┐ рдпрд╛ рдХреНрд╖реЗрддреНрд░) рдХрд╛ рдирд╛рдоред рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрдбрд╝реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА # рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреА рдУрд░ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЗ рдмрд╛рдж рд╡реЗ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдПрдХ рдмрдбрд╝рд╛ рдирд┐рд╢рд╛рди рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдлреИрдВрдЯрдо рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд▓реЛрдЬрд░ рднрд╛рд╖рд╛ рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдФрд░ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред
// print a list of strings list := ["red", "yellow", "orange"] list.each |Str color| { echo(color) } // print 0 to 9 10.times |i| { echo(i) } // create a function that adds two integers add := |Int a, Int b->Int| { return a + b } nine := add(4, 5) // map Int to Str map := [0:"zero", 1:"one", 2:"two"] // empty Int:Str map Int:Str[:] // map [1, 2, 3].map { "f" + it * 2 } // ["f2", "f4", "f6"] //reduce ["2":2, "3":3, "4":4].reduce(0) |Int sum, Int v->Int| { sum + v } // 9
рдШреЛрд╖рдгрд╛рддреНрдордХ рд╡рд┐рд╡рд░рдг
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрди рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛:
Window { title = "Example" size = Size(300, 200) content = EdgePane { center = Label { text = "Hello world"; halign = Halign.center } bottom = Button { text = "Close"; onAction.add { it.window.close } } } }.open homer := Person { name = "Homer Simpson" age = 39 children = [ Person { name = "Bart"; age = 7 }, Person { name = "Lisa"; age = 5 }, Person { name = "Maggie"; age = 1 } ] }
рд╕рдорд╛рдирддрд╛
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбрд▓ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореЗрдореЛрд░реА рд▓реЙрдХ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЧрд▓рдд рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╕реЗ рдЕрдкреНрд░рд┐рдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдЧрддрд┐рд░реЛрдз, рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдЖрджрд┐ред рдпрд╣ рд╕рдм рд╕рдорд╡рд░реНрддреА рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рдирд┐рдореНрди рд╕реНрддрд░ рд╣реИред
рдлрдВрддрд╛рд╕реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ:
- рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ (рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ)
const class Point { new make(Int x, Int y) { this.x = x; this.y = y } const Int x const Int y } p := Point(0, 0)
- рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЗрд╡рд▓ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдб рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдбреЗрдЯрд╛ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
- рдереНрд░реЗрдбреНрд╕ (рдПрд░рд▓рдВрдЧ-рд╢реИрд▓реА) рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдореЙрдбрд▓ (рдЕрднрд┐рдиреЗрддрд╛)
echo("\n--- echoActor ---") // this actor just echos messages sent to it a := Actor(ActorPool()) |msg| { echo(msg); return msg } // send some messages and have them printed to console f1 := a.send("message 1") f2 := a.send("message 2") f3 := a.send("message 3") // now block for the result of each message echo("Result 1 = " + f1.get) // message 1 echo("Result 2 = " + f2.get) // message 2 echo("Result 3 = " + f3.get) // message 3
рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА
- рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди
class Person { Int yearsToRetirement(Int retire := 65) { return retire - age } Int age }
- рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди - рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- рдЗрдВрдкреНрд▓рд╛рдВрдЯреЗрдб рдлреАрд▓реНрдб рдПрдХреНрд╕реЗрд╕
class Thing { Int id := 0 { get { echo("get id"); return &id } set { echo("set id"); &id = it } } }
- рд╢реВрдиреНрдп рдкреНрд░рдХрд╛рд░ - рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЬреЛ рд╢реВрдиреНрдп рдХреЛ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Str // never stores null Str? // might store null x := str.size => x is typed as Int x := str?.size => x is typed as Int?
- рд╕реА # рдПрдВрдбрд░реНрд╕ рд╣реЗрдЬреЗрд▓рдмрд░реНрдЧ рдореЗрдВ рд╣рдЯрд╛рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рднреА рдЬрд╛рдБрдЪ рдХреА, рдЙрдиреНрд╣реЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдФрд░ рдпрд╣ рд╕рд╣реА рдерд╛)
- рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдЯреАрдХрддрд╛ - рдХреЗрд╡рд▓ 64 рдмрд┐рдЯ рдЗрдВрдЯ рдФрд░ рдлреНрд▓реЛрдЯ рд╕рдорд░реНрдерди рд╣реИ
рд╕рд╛рдзрди
- рдлреИрдВрдЯрдо рдПрдХреНрд▓рд┐рдкреНрд╕-рдЖрдзрд╛рд░рд┐рдд IDE F4

- рд╡реЗрдм рдПрдкреНрд▓реАрдХреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдЯреЗрд▓реНрд╕
//Hello world written in tales using tales class HelloWorld : Page{ @Route{uri="/hello-world"} Void main(){ response.writeStr("Hello World") } }
- рддрд░реНрдХ-рдореБрдХреНрдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдореВрдВрдЫреЗрдВ
using mustache Mustache template := Mustache("Hello, {{ name }}!".in) template.render(["name":"world"])
- рдлреЗрдВрдЯрдо рдкреЙрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА

- fantom.org
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рдпрд╣ рд╣реИ рдХрд┐ рдлреЗрдВрдЯрдо рдЬрд╛рд╡рд╛ рдХрд╛ рдПрдХ рдФрд░ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рджрд░реНрд╢рди рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рднреА рдЖрдХрд░реНрд╖рдг рдХреЛ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреЗрдВрдЯрдо рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ
рдЕрдиреБрдХреВрд▓ рд╕рдореБрджрд╛рдп , рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреЛрдб , рдПрдХ рдЕрдЪреНрдЫрд╛
рдЖрдИрдбреАрдИ рдФрд░ рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдЪреАрдЬреЗрдВред