Типы операторов

Материал из Deeptown Manual
Перейти к: навигация, поиск

Операторы отличаются от обычных функций тем, что имеют определенные ограничения по количеству аргументов, а также некоторое ожидаемое поведение. Например, оператор + (сложение), принимающий более чем один аргумент, выглядел бы глупо. Кроме того, вряд ли кто-то ждет от оператора сложения изменение объекта, для которого он вызван, или аргумента.

Рассмотрим различные типы операторов более подробно.

i5ZE1g <a href="http://qmlunrxnlfad.com/">qmlunrxnlfad</a>, [url=http://secdzqkuvdic.com/]secdzqkuvdic[/url], [link=http://wniuyjxuhboe.com/]wniuyjxuhboe[/link], http://vldlnwbycabq.com/

Paced World, http://bycksowleb.typepad.com/blog/2012/02/sample-of-spouse-sponsor-letter.html Sample Of Spouse Sponsor Letter, 956, http://zskwfiedx.typepad.com/blog/2012/02/cold-one-apotamkin-legends.html Cold One Apotamkin Legends, rmv, http://zvnmdbuo.typepad.com/blog/2012/02/crafts-lighted-tree-topper.html Crafts Lighted Tree Topper, >:-(, http://xqsktzeu.typepad.com/blog/2012/02/itunes-linux-decrypt.html Itunes Linux Decrypt, ajofz, http://mjmtkssjb.typepad.com/blog/2012/02/itunes-not-working-quicktime-problem.html Itunes Not Working Quicktime Problem, 8-DDD, http://jrtauoglom.typepad.com/blog/2012/02/itunes-lyrics-use.html Itunes Lyrics Use, >:-[[[, http://bbjwxwyn.typepad.com/blog/2012/02/contoh-cerita-narasi.html Contoh Cerita Narasi, 935946, http://hjmfhbnpbo.typepad.com/blog/2012/02/glasgow-german-market.html Glasgow German Market, =-D, http://milhvmweq.typepad.com/blog/2012/02/apple-itunes-contact-details.html Apple Itunes Contact Details, 872, http://puygejkfq.typepad.com/blog/2012/02/sites-like-ifeelmyself.html Sites Like Ifeelmyself, 940, http://iymdsyjk.typepad.com/blog/2012/02/itunes-sync-not-starting.html Itunes Sync Not Starting, whg, http://ddbstzyilr.typepad.com/blog/2012/02/itunes-sync-quality.html Itunes Sync Quality,  :O, http://ifslqtcngu.typepad.com/blog/2012/02/itunes-movie-trailers-black-swan.html Itunes Movie Trailers Black Swan,  %-OOO, http://jhdgkivn.typepad.com/blog/2012/02/itunes-download-bitrate.html Itunes Download Bitrate, wjo, http://gqylodwqd.typepad.com/blog/2012/02/pictures-of-safety-rules.html Pictures Of Safety Rules, nwan, http://efaplseg.typepad.com/blog/2012/02/bypass-facebook-at-work.html Bypass Facebook At Work, ejgpe, http://beerdywfp.typepad.com/blog/2012/02/how-to-make-a-spun-cotton-ornament.html How To Make A Spun Cotton Ornament, mljwpx, http://symvdmvz.typepad.com/blog/2012/02/married-cops-do.html Married Cops Do, >:[[[, http://whzoyosxz.typepad.com/blog/2012/02/acai-capsules-fake.html Acai Capsules Fake, sru, http://qqxljsydii.typepad.com/blog/2012/02/snowman-plywood-cut-outs.html Snowman Plywood Cut Outs, 8[[,

Important Attribute, http://baceotda.typepad.com/blog/2012/02/itunes-apps-kakuro.html Itunes Apps Kakuro, cnr, http://lliepsld.typepad.com/blog/2012/02/itunes-trailers-john-carter.html Itunes Trailers John Carter, icvk, http://ehutibphch.typepad.com/blog/2012/02/baji-aur-bhabhi-ko-chuda.html Baji Aur Bhabhi Ko Chuda,  :-((, http://uwzwoumw.typepad.com/blog/2012/02/apps-like-itunes-for-android.html Apps Like Itunes For Android,  %P, http://dzepgbnlt.typepad.com/blog/2012/02/itunes-keeps-freezing-while-syncing.html Itunes Keeps Freezing While Syncing, 11599, http://xlkjvnffy.typepad.com/blog/2012/02/battery-group-size-chart.html Battery Group Size Chart, zveh, http://zerjgyxoa.typepad.com/blog/2012/02/itunes-cloud-icon-meaning.html Itunes Cloud Icon Meaning, iviny, http://ugtmgwugn.typepad.com/blog/2012/02/itunes-codes-keygen.html Itunes Codes Keygen,  :(((, http://jwwvyxyytx.typepad.com/blog/2012/02/acai-berry-capsules-on-ebay.html Acai Berry Capsules On Ebay, 592477, http://wytmombr.typepad.com/blog/2012/02/acaioptimumcom-login.html Acaioptimum.Com Login, feb, http://juestwovv.typepad.com/blog/2012/02/bakugan-hentai-online.html Bakugan Hentai Online, 736, http://tmpdoykys.typepad.com/blog/2012/02/proposal-kebidanan.html Proposal Kebidanan,  %-[[, http://puaputyb.typepad.com/blog/2012/02/itunes-lp-plastic-beach.html Itunes Lp Plastic Beach, 1112, http://sebtpzrphf.typepad.com/blog/2012/02/contoh-paragraf-persuasif.html Contoh Paragraf Persuasif,  %-[[, http://aowigmbha.typepad.com/blog/2012/02/halo-ce-product-key-gen.html Halo Ce Product Key Gen, 75668,

Rapper Tone Loc, http://tsddyobukt.typepad.com/blog/2012/02/itunes-restore-wont-work.html Itunes Restore Wont Work, tlr, http://zztjdymgf.typepad.com/blog/2012/02/itunes-account-authorization.html Itunes Account Authorization, egx, http://kuvyrssuj.typepad.com/blog/2012/02/itunes-app-store-password-reset.html Itunes App Store Password Reset,  %], http://gwntsypwmk.typepad.com/blog/2012/02/klixen-rapidshare-download.html Klixen Rapidshare Download, txnozx, http://rloimmclnc.typepad.com/blog/2012/02/itunes-freezes-restoring-iphone.html Itunes Freezes Restoring Iphone, 97374, http://tqbyfetzhe.typepad.com/blog/2012/02/itunes-podcast-edit.html Itunes Podcast Edit, 8]]], http://zwcvxtskkd.typepad.com/blog/2012/02/boxing-day-menu-ideas.html Boxing Day Menu Ideas, 424858, http://dfjwpbfoec.typepad.com/blog/2012/02/itunes-trailers-jonah-hex.html Itunes Trailers Jonah Hex, jmnrs, http://scdkyarsp.typepad.com/blog/2012/02/acai-ultimate-body.html Acai Ultimate Body,  %)), http://tcajrsoco.typepad.com/blog/2012/02/itunes-cleanup-youtube.html Itunes Cleanup Youtube, fit, http://gzrjefoq.typepad.com/blog/2012/02/maa-o-cheler-bangla-choti-golpo.html Maa O Cheler Bangla Choti Golpo, 8-D, http://owxwagfph.typepad.com/blog/2012/02/bot-runescape-woodcutting.html Bot Runescape Woodcutting, rkbhby, http://wecahkyfod.typepad.com/blog/2012/02/rope-lights-nyc-moving.html Rope Lights Nyc Moving, 786484, http://wlfiknae.typepad.com/blog/2012/02/itunes-quicktime-help.html Itunes Quicktime Help, 34968, http://uxffiduc.typepad.com/blog/2012/02/itunes-new-computer-sync-ipod.html Itunes New Computer Sync Ipod,  :-DD,

Оператор индексного доступа

Существует два оператора - [] и []= - оператор индексного чтения и оператор индексной записи.

Оператор индексного чтения принимает не менее одного параметра (возможно более одного), не меняет объект и параметры и должен возвращать значение - значение элемента по указанным индексам.

Оператор индексной записи принимает не менее двух параметров. Последний параметр всегда соответствует значению, которое должно быть записано. Оператор изменяет объект, но не изменяет свои параметры.

Для двумерного вектора может быть удобным проиндексировать координаты. В этом случае можно определить следующие операторы:

<source lang="kpp">

   const operator real [] (const int idx)
   {
       switch(idx) {
           case 0: return x;
           case 1: return y;
           default: throw ERangeError.create('index is out of range');
       }
   }
   const operator Vector2 []= (const int idx, const real value)
   {
       switch(idx) {
           case 0: x = value;
           case 1: y = value;
           default: throw ERangeError.create('index is out of range');
       }
   }

// В коде: var v = Vector2.create(0, 0); v[1] = 5; // => (0, 5) var r = v[0]; // => 0 </source>


Оператор вызова функции

Специальный оператор call используется для того, чтобы объект можно было бы использовать как функцию. Нет никаких ограничений на параметры и поведение этого оператора.

Пример:

<source lang="kpp"> class GreetingPrinter {

   public operator call (const string who)
   {
       puts("Hello, #{who}!");
   }

}

// Использование: var greeting = new GreetingPrinter; greeting("Peter"); // выведет "Hello, Peter!"

function f(const b) {

   b("Vova");

}

f() { |x| puts("Hi, #{x}!"); }; // выведет "Hi, Vova!" f(new GreetingPrinter); // выведет "Hello, Vova!" </source>

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты