Firma dei metodi

di il
18 risposte

Firma dei metodi

La firma dei metodi in obj-c mi sembra piuttosto strana e pure il modo di richiamarli. Me la potete spiegare magari facendomi capire gli eventuali pregi.

18 Risposte

  • Re: Firma dei metodi

    Cominciamo con qualche esempio semplice:
    
    +(double)MyFunc1;
    -(double)MyFunc2;
    
    La prima cosa che si nota sono i segni + e -, il '+' indica un metodo di classe (statico), il '-' un metodo di istanza (quelli soliti). Le due funzioni restituiscono un double e non vogliono parametri, non serve il().

    se invece c' è un parametro:
    
    -(double) MyFunc:(double)a;
    
    Per richiamarle si scrive:
    
    double a = [MyClass MyFunc1];
    double b = [myIstance MyFunc2];
    double c = [myIstance MyFunc:100];
    
    Fin qui non ci dovrebbero essere problemi, dimmi se è tutto chiaro.
  • Re: Firma dei metodi

    Le parentesi attorno ai tipi hanno uno scopo?
  • Re: Firma dei metodi

    Niente di particolare ci vanno e basta, probabilmente sono indispensabili perchè la sintassi quando si hanno più parametri si complica:
    
    -(double) DistanceFrom: (double)a And (double)y;
    
    che si richiama in questo modo:
    
    double d = [myInstance distanceFrom:2 And:3];
    
  • Re: Firma dei metodi

    Questa non l"ho capita.
  • Re: Firma dei metodi

    Serve per rendere descrittivi i parametri nel punto di chiamata. Esiste qualcosa di simile in C#
  • Re: Firma dei metodi

    Mi puoi fare un esempio con tre o quattro parametri ?
  • Re: Firma dei metodi

    Ecco qua:
    
    -(void) SetBounds_Left:(int)a Top:(int)b Right:(int)c Bottom:(int)d;
    
    Che viene richiamata in questo modo:
    
    [shape SetBounds_Left:100 Top:100 Right:200 Bottom:200];
    
  • Re: Firma dei metodi

    E a,b,c,d a cosa servono?
  • Re: Firma dei metodi

    Vengono usati nell' implementazione:
    
    -(void) SetBounds_Left:(int)a Top:(int)b Right:(int)c Bottom:(int)d
    {
       if ( a < b)....
    }
    
    Sono i parametri di chiamata della funzione,invece 'Left', 'Top' , ecc sono solo descrittivi e vengono usati nel punto di chiamata.
  • Re: Firma dei metodi

    Le descrizioni sono obbligatorie o opzionali?
  • Re: Firma dei metodi

    Non so se ho capito quello che hai chiesto, ma provo a darti una risposta anche io.

    Le descrizioni sono opzionali ma consigliate. In pratica il metodo di prima può essere scritto come
    
    -(void) SetBounds_Left:(int)a :(int)b :(int)c :(int)d
    
    In cui i "due punti" indicano la presenza di un parametro.
    L'invocazione di tale metodo sarà
    
    [myInstance SetBounds_Left: 2 : 5 : 6 : 8];
    
    Ovviamente l'utilizzo di questo metodo sarà più "scomodo" perché non avendo etichette non hai degli aiuti riguardo i parametri dai inserire, mentre nella versione scritta da barba59 il nome del metodo è autoesplicativo.
  • Re: Firma dei metodi

    Ciao Della,
    In effetti le descrizioni nel punto di chiamata sono molto utili. Tra l' altro Xcode ti aiuta moltissimo in fase di inserimento per cui ti basta premere tab e non devi scrivere niente. Sapevo che erano state introdotte anche in C# ma non le avevo mai usate, credo che comincerò ad usarle pure li.
  • Re: Firma dei metodi

    E si può usare l'overload sui parametri. Come funziona?
  • Re: Firma dei metodi

    In obj-C non esiste l'overloading. Devi per forza creare due metodi con nomi diversi. Però si gioca sul fatto che i nomi dei metodi sono quelli composti da tutte le etichette per creare un finto overloading. Ad esempio
    
    - (id) initWithInt: (int) anInt andInt: (int) anotherInt;
    - (id) initWithInt: (int) anInt andDouble: (double) aDouble;
    
Devi accedere o registrarti per scrivere nel forum
18 risposte