Domanda

in C # an & internal; quot " la classe o il metodo possono essere richiamati solo all'interno dell'assembly in cui si trova ... so che Ruby non ha "assembly" e quot; o qualsiasi tipo di pacchetto reale come loro (diversi dalle gemme, ma non sono affatto la stessa cosa), ma mi chiedo se c'è un modo per me di limitare la posizione da cui può essere chiamato un metodo, simile a interno?

Sto aggiornando un piccolo framework e ho creato una classe con 3 metodi. Voglio essere in grado di chiamare 2 dei 3 metodi solo dal mio framework e il terzo metodo da qualsiasi luogo. È possibile in rubino? o sto sbagliando e dovrei creare due classi separate? o?

È stato utile?

Soluzione

Sfortunatamente, Ruby è un linguaggio abbastanza carente in termini di incapsulamento. La sua capacità è piuttosto limitata, quindi no, non c'è niente di equivalente alla parola chiave interna C #. Forse nel tuo caso due classi separate sarebbero migliori, ma una chiara dotstring o uno schema di denominazione speciale potrebbero fare lo stesso senza pesanti modifiche.

Inoltre, è necessario notare che la parola chiave interna non è altro che convenienza per gli sviluppatori di librerie. In realtà non impedisce a qualcuno di utilizzare un metodo o una classe contrassegnati come interni, c'è modo di aggirare questa protezione con l'inserimento di codice, AOP, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top