哪些语言具有可以分配getter和setter的属性?

时间:2009-05-18 16:40:51

标签: programming-languages properties

Java没有。 (这只是惯例)

德尔福。 我相信C#的确如此。

还有其他语言吗?

修改 我应该举个例子:

德尔福:(要注意,已经有一段时间了,我可能会犯这个错误)

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

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

7 个答案:

答案 0 :(得分:3)

C#(只是提供一个例子):

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

答案 1 :(得分:3)

Ruby经过attr_readerattr_writerattr_accessor(用于读/写):

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

  ...
end

答案 2 :(得分:3)

Python确实。

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

setter的代码类似。

答案 3 :(得分:1)

VB.NET通过Property关键字。

答案 4 :(得分:1)

C ++不符合标准,但您可以通过模板创建容量。

答案 5 :(得分:0)

objective c你可以使用synthesize关键字来保持懒惰。

答案 6 :(得分:0)

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

......至少在理论上。似乎不适用于Rakudo r38250。