2009-05-18 7 views
1

Java ne fonctionne pas. (C'est juste une convention)Quelles langues ont des propriétés qui peuvent avoir assigné des getters et des setters?

Delphi fait. Je crois que C# fait.

Quelles sont les autres langues?

Edit: j'ai donné un exemple:

Delphi: (attention, il a été un certain temps, je reçois ce mal)

type 
    TSomething = class 
    fEmployeeNum: String; 
    property employeeNum: String read fEmployeeNum write setEmployeeNum; 
    end; 

procedure TSomething.setEmployeeNum(var val: String); 
begin 
    fEmployeeNum := val; 
end; 
+1

Je pense que cela devrait être une question wiki communautaire, car il n'y a pas de «réponse» qui serait «la meilleure». –

+0

C# supporte les getters et setters conventionnels, et il a aussi une forme courte pour le codeur paresseux :) I.E .: public string myString {get; ensemble; } –

+0

@S. Lott Bon point! J'oublie cela de temps en temps. – cgp

Répondre

3

Python fait.

class SomeClass(object): 
def f_get(self): 
    return self.value 
fprop = property(f_get) 

Le code pour setter est similaire.

+0

En fait, c'était l'inspiration pour la question. – cgp

1

VB.NET fait à travers la propriété mot-clé.

1

C++ ne fait pas partie de la norme, mais vous pouvez créer la capacité à l'aide de modèles.

3

C# ne (juste pour donner un exemple):

class Foo 
{ 
    public string Bar { get; private set; } 
    public string Bargain 
    { 
     get { return this._Bargain; } 
     set { this._Bargain = value; } 
    } 
    private string _Bargain; 
} 
+0

+1 pour donner des exemples de manière conventionnelle et de propriétés automatiques. –

3

Ruby fait par attr_reader, attr_writer et attr_accessor (en lecture/écriture):

class SomeClass 
    attr_reader :foo #read-only 
    attr_writer :bar #write-only 
    attr_accessor :baz #read and write 

    ... 
end 
+0

Pouvez-vous donner un exemple simple? –

+0

classe X; attr_reader: foo, def initialise (foo); @foo = foo; fin ; fin ; X.new ('ape'). Foo # => 'ape' – rampion

+0

Merci rampion, mais j'espérais un bien formaté comme les autres ici. En tout cas, postez-le comme votre propre réponse et je voterai pour cela. –

0

objective c et vous pouvez être paresseux avec le mot-clé synthesize.

0

En Perl 6,

use v6; 

sub foo() is rw { 
    state $foo; 
    return new Proxy: 
     FETCH => method { return $foo }, 
     STORE => method($to) { $foo = $to }; 
} 

foo = "Hello, world!"; 
say foo; 

... au moins en théorie. Ne semble pas fonctionner avec Rakudo r38250.

Questions connexes