2009-05-18 5 views
1

Java nicht. (Es ist nur Konvention)Welche Sprachen haben Eigenschaften, die Getter und Setter zugewiesen haben können?

Delphi tut. Ich glaube, C# tut es.

Was andere Sprachen tun?

Edit: ich ein Beispiel gegeben haben sollte:

Delphi: (Vorsicht, es ist schon eine Weile, kann ich diese falsch)

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

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

Ich denke, das sollte eine Community-Wiki-Frage sein, da es keine "Antwort" gibt, die "am besten" wäre. –

+0

C# unterstützt konventionelle Getter und Setter, und es hat auch eine kurze Form für den Lazy Coder :) I.E .: public string myString {get; einstellen; } –

+0

@S. Lott Guter Punkt! Das vergesse ich von Zeit zu Zeit. – cgp

Antwort

3

Python tut.

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

Code für Setter ist ähnlich.

+0

Eigentlich war das die Inspiration für die Frage. – cgp

1

VB.NET funktioniert durch die Immobilie Stichwort.

1

C++ nicht unter dem Standard, aber Sie können die Kapazität durch Vorlagen erstellen.

3

C# ist (nur ein Beispiel zu liefern):

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

+1 für Beispiele der konventionellen Art und Auto-Eigenschaften. –

3

Rubin hat durch attr_reader, attr_writer und attr_accessor (für Lesen/Schreiben):

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

    ... 
end 
+0

Können Sie ein einfaches Beispiel angeben? –

+0

Klasse X; attr_reader: foo, def initialisieren (foo); @ foo = foo; Ende ; Ende ; X.new ('ape'). Foo # => 'ape' – rampion

+0

Danke, rampion, aber ich hoffte auf eine schön formatierte wie die anderen hier. Schreiben Sie es als Ihre eigene Antwort und ich werde es abstimmen. –

0

objective c und Sie können mit dem Schlüsselwort synthesize faul sein.

0

In 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; 

... zumindest in der Theorie. Scheint nicht mit Rakudo r38250 zu arbeiten.

Verwandte Themen