Programming languages 具有单独获取/设置宣传的语言

Programming languages 具有单独获取/设置宣传的语言,programming-languages,Programming Languages,我一直在写一个个人项目,不断遇到这样的情况:一个字段需要公开可读,但不应该公开可写。据我所知,在这些情况下,公认的“良好实践”是将字段私有化,编写一个普通的getter,就这样吧 似乎可以通过允许程序员为读/写访问设置不同的公开级别来节省getter的开销(在执行和开发人员时间方面),就像UNIX文件权限一样 有任何语言可以做到这一点吗?UNIX文件系统权限和类的实例变量可见性(公共、受保护、私有、全局等)之间存在一些差异。前者是定义附加到对象的权限列表的,后者是 不管怎么说,有了它 Ruby通

我一直在写一个个人项目,不断遇到这样的情况:一个字段需要公开可读,但不应该公开可写。据我所知,在这些情况下,公认的“良好实践”是将字段私有化,编写一个普通的getter,就这样吧

似乎可以通过允许程序员为读/写访问设置不同的公开级别来节省getter的开销(在执行和开发人员时间方面),就像UNIX文件权限一样


有任何语言可以做到这一点吗?

UNIX文件系统权限和类的实例变量可见性(公共、受保护、私有、全局等)之间存在一些差异。前者是定义附加到对象的权限列表的,后者是

不管怎么说,有了它

Ruby通过定义:

因此,如果我有一个
博客
类,它看起来像:

class Blog
  attr_accessor :title
end
attr\u accessor:title
被翻译成“getter”和“setter”,如下所示:

def title=(value)
  @title = value
end

def title
  @title
end
相反,如果我在同一个类中定义了
attr\u reader:title
,它将被转换为“getter”:

def title
  @title
end
attr\u writer:title
被翻译成“setter”时:

def title=(value)
  @title = value
end
在C#中,您可以使用:

public int Foo{get;private set;}

这节省了编写单独getter方法的大部分复杂性。而且这种getter的执行时间开销应该是零(由于内联),或者非常小。

项目中的用户模型是什么?“公共”是什么意思?没有用户。我说的是类字段公开(public、private、protected)。读和写总是需要访问器(用Ruby的说法)。您可以很容易地自动生成默认访问器(变量读/写);自动生成的存取器针对速度进行了优化。因此,
attr\u reader:foo
将按您的要求执行。谢谢您的回答。在UNIX上:当然,所以只有在您谈论修改全局访问权限时,它们才是真正相似的。@Shriken是的,我理解您为什么使用这种比较。我只是想在读了富木的评论后,我会分享一些潜在的细节。