Programmēšana

Groovy: ieslēdziet steroīdus

ATJAUNINĀT: Šī ziņa tika būtiski atjaunināta 2016. gada 17. novembrī, lai labotu kļūdainus apgalvojumus un piemērus, labotu pamatā esošo HTML izkārtojumu (lasītājiem tas nav acīmredzams, ja vien HTML pārlūku neapskatāt tīmekļa pārlūkprogrammā) un novēršat dažas pareizrakstības problēmas. Ja kāda iemesla dēļ vēlaties redzēt veco, nepareizo ziņu, skatiet Wayback Machine arhivēto versiju.

Es jau iepriekš esmu rakstījis emuārus par Groovy atbalstu String ieslēgšanai. Groovy var ieslēgt daudz vairāk nekā tikai burtiski Stīgas (un burtiski neatņemami tipi, kurus Java ļauj ieslēgt), un es to šeit īsumā parādīšu.

Groovy's slēdzis paziņojumā tiks izmantota metode, kas ieviesta ar nosaukumu "isCase", lai noteiktu, vai konkrēts slēdzis opcija ir saskaņota. Tas nozīmē, ka pielāgotie objekti Groovy ir "pārslēdzami". Vienkāršajam piemēram šajā emuāra ziņā es izmantošu Java klases SimpleState un Valsts.java.

Saraksts 1. SimpleState.java

 iepakojums dustin.piemēri; importēt statisko java.lang.System.out; / ** * Java klase, kas jāizmanto, lai demonstrētu "ieslēdziet steroīdus" Groovy. * Groovy skripts varēs {@code switch} ieslēgt šīs klases gadījumus *, netieši izsaucot {@code toString ()}, ja {@code case} * priekšrakstos kā vienumi tiek izmantoti {@code String} s saskaņot. * / publiskā klase SimpleState {private String stateName; public SimpleState (final String newStateName) {this.stateName = newStateName; } @Orride public String toString () {return this.stateName; }} 

Iepriekš minētās Java klases Stīga attēlojumu var ieslēgt Groovy skriptā, kā parādīts nākamajā kodu sarakstā switchOnSimpleState.groovy:

Saraksts 2. switchOnSimpleState.groovy

#! / usr / bin / env groovy import dustin.examples.SimpleState SimpleState state = new SimpleState ("Colorado") print "$ {state.stateName} štata devīze ir slēdzis (štats) {gadījums" Alabama ": drukāt" Audemus jura nostra defereere "pārtraukuma lietu" Aļaska ": izdrukāt" ziemeļu uz nākotni "pārtraukuma lietu" Arizona ": drukāt" Ditat Deus "pārtraukuma lietu" Arkansas ": izdrukāt" Regnat populus "pārtraukuma lietu" Kalifornija ": drukāt "Eureka" pārtraukuma lietu "Colorado": drukāt "Nil sine numine" pārtraukuma lietu "Connecticut": drukāt "Qui transtulit sustinet" pārtraukums noklusējums: print "<>"} println "'" 

Kad iepriekšējais Groovy skripts tiek palaists pret iepriekš minēto vienkāršo Java klasi, kods izdrukā pareizo informāciju, jo Groovy netieši izsauc toString () metode "valsts" instancē Valsts tiek ieslēgts. Līdzīgu funkcionalitāti tagad var sasniegt arī Java, taču ir skaidri jāzvana toString () uz ieslēgtā objekta. Ir arī vērts paturēt prātā, ka tad, kad 2010. gada sākumā es uzrakstīju šīs ziņas sākotnējo versiju, Java neatbalstīja Strings ieslēgšanu. Iepriekš minētās darbības rezultāts ir redzams zemāk esošajā ekrāna momentuzņēmumā (skripta nosaukums neatbilst iepriekš minētajam, jo ​​tas ir vecs ekrāna momentuzņēmums no šīs sākotnējās ziņas pirms tā labošanas un atjaunināšanas).

Ar Groovy un isCase metodi, es varu ieslēgt gandrīz jebkuru datu veidu, kas man patīk. Lai to parādītu, Java klase Valsts tiks izmantots, un tā kodu saraksts ir parādīts zemāk. Tas ietver a isCase (štats) metode, kuru Groovy netieši izsauks, kad Valsts tiek pārslēgti kā gadījumā izvēles. Šajā gadījumā isCase (štats) metode vienkārši izsauc State.equals (objekts) metodi, lai noteiktu, vai tas gadījumā ir patiess. Lai gan tā ir tipiska uzvedība isCase (objekts), mēs būtu varējuši likt tai noteikt, vai tas tā ir vai nē, kaut kā mēs vēlējāmies.

Uzskaitījums 3. Valsts.java

iepakojums dustin.piemēri; importēt statisko java.lang.System.out; public class Valsts {private String stateName; public State (galīgā virkne newStateName) {this.stateName = newStateName; } / ** * Metode, kas netieši jāizmanto Groovy slēdzim, kad ir ieslēgts šīs * klases eksemplārs. * * @param CompareState State man nodeva lietu, lai to salīdzinātu ar mani. * / public boolean isCase (galīgā stāvokļa salīdzināšanas valsts) {return CompareState! = null? CompareState.equals (tas): nepatiesa; } publiskais būla skaitlis ir vienāds (galīgais Object other) {if (! (cits State of State)) {return false; } gala valsts otherState = (valsts) cita; if (this.stateName == null? otherState.stateName! = null:! this.stateName.equals (otherState.stateName)) {return false; } return true; } @Orride public String toString () {return this.stateName; }} 

Iepriekš parādītā vienkāršā standarta Java klase ievieš isCase metodi, kas ļaus Groovy to ieslēgt. Šis Groovy skripts izmanto šo klasi un spēj veiksmīgi ieslēgt Valsts.

#! / usr / bin / env groovy import dustin.examples.State State State = new State ("Arkansas") State alabama = new State ("Alabama") State Arkansas = new State ("Arkansas") State alaska = new State ("Aļaska") štats arizona = jauns štats ("Arizona") štata kalifornija = jauns štats ("Kalifornija") štats colorado = jauns štats ("Kolorādo") štats connecticut = jauns štats ("Konektikuta") drukāt "Devīze štats $ {state.stateName} ir "slēdzis (štats) {case alabama: print" Audemus jura nostra defereere "break case alaska: print" North to the future "break case arizona: print" Ditat Deus "break case arkansas : print "Regnat populus" break case california: print "Eureka" break case colorado: print "Nil sine numine" break case connecticut: print "Qui transtulit sustinet" break default: print "<>"} println "'" 

Nākamā ekrāna momentuzņēmuma izvade norāda, ka Groovy skripts spēj veiksmīgi ieslēgt a Valsts objekts. Pirmajā komandā tiek izmantots iepriekš apspriestais "vienkāršais" piemērs, bet otrajā - piemērs, kas jāizsauc Valsts's isCase (štats) metodi.

Šīs spējas nodarbības skaistums ir "pārslēdzams", pamatojoties uz isCase () metode ir tāda, ka tā ļauj īsāku sintaksi situācijās, kuras citādi varētu būt nepieciešamas ilgstošas ja/citādi, ja/cits konstruē. Vēlams pilnībā izvairīties no šādām konstrukcijām, bet dažreiz mēs saskaramies ar tām un Groovy slēdzis paziņojums padara viņus mazāk garlaicīgus.

Tas ir pilnīgi iespējams ar Groovy slēdzis lai vairākas pārslēgšanās iespējas atbilstu norādītajiem nosacījumiem. Tāpēc ir svarīgi uzskaitīt gadījumā paziņojumi, kuru secībai ir vēlama, jo pirmā spēle tiks izpildīta. The pārtraukums atslēgvārds tiek izmantots Groovy's slēdzis kā tas ir Java.

Ir daudz vairāk spēka tajā, ko Groovy slēdzis atbalsta. Daži ieraksti, kas aptver šo spēku, ietver Groovy Goodness: The Switch Statement, Groovy, ļaujiet man saskaitīt veidus, kā es jūs mīlu, un Groovy dokumentāciju.

Šo stāstu "Groovy: Stereoīdu ieslēgšana" sākotnēji publicēja JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found