我正在写一个有很多getter和setter的课程,并且想知道人们对以下内容的看法:
通常的方法是编码如下:
public function setChangeSort($changeSort)
{
self::$changeSort = $changeSort;
}
public function getChangeSort()
{
return self::$changeSort;
}
Run Code Online (Sandbox Code Playgroud)
您对以下内容有何看法:
public function setChangeSort($changeSort) { self::$changeSort = $changeSort; }
public function getChangeSort() { return self::$changeSort; }
Run Code Online (Sandbox Code Playgroud)
以原始的方式做这件事我没有问题,因为这就是它应该如何完成的.它似乎在我的classon函数中占用了很多空间,这些空间在他们的工作中非常明显.
提前致谢.
我有一个带有静态变量的类的简单情况和一个get函数都编译好,但在运行时我收到此错误
[Sun Jul 25 03:57:07 2010] [error] [client 127.0.0.1] PHP Fatal error: Undefined class constant 'TYPE' in .....
Run Code Online (Sandbox Code Playgroud)
用于函数getType()
这是我的课
class NoSuchRequestHandler implements Handler{
public static $TYPE = 2001;
public static $VER = 0;
public function getType(){
return self::TYPE;
}
public function getVersion(){
return self::VER;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你们
在C#类中,我有一个列表和列表的两个不同的getter:
private List<A> a;
public List<A> EveryA
{
get
{
if (a == null) a = new List<A>();
return a;
}
}
public List<A> FilteredA
{
get
{
return EveryA.FindAll(a => a.IsInFilter);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:语法怎么样FilteredA.Add(this);?
它编译并运行但不能将任何项添加到任何列表中.
一个更好的编译器是否必须通知(小)问题?
我有一个这样的课:
Public Class MyClass
Private _intList As New List(Of Integer)
Private _avg As Decimal
Public Sub Add(ByVal anInt As Integer)
_intList.Add(anInt)
End Sub
Public Property Avg() As Decimal
Get
Dim _sum As Integer = 0
For Each anInt In _intList
_sum += anInt
Next
Avg = If((_intList.Count > 0), _sum / _intList.Count, _avg)
Return _avg
End Get
Set(ByVal value As Decimal)
If _avg <> value Then
_avg = value
Console.WriteLine("Value changed")
End If
End Set
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
Getter正在计算平均值并调用Setter来保存该值.由于某种原因,我无法理解,平均值始终为0.例如: …
我有点困惑为什么我不能这样初始化一个getter:
@synthesize stack = _stack;
- (NSMutableArray *) stack
{
if (self.stack == nil) {
self.stack = [[NSMutableArray alloc] init];
}
return self.stack;
}
Run Code Online (Sandbox Code Playgroud)
我知道如果我用_stack替换self.stack,它将完美地工作,但我只是不知道为什么我不能使用self.stack.我稍后在代码中使用self.stack而没有问题.
getter将获得有关它所在的struct的状态的消息,它由struct的属性的组合定义,这些属性是有限的.
首先,这不是关于微优化,我只是认为:
StringBuilder msg = new StringBuilder();
...
msg.AppendLine("static string");
...
Run Code Online (Sandbox Code Playgroud)
看起来更清洁:
String msg = String.Empty;
...
msg = String.Concat(msg, "static string", System.Environment.NewLine)
...
Run Code Online (Sandbox Code Playgroud)
所以只是一种美学选择.
msg变量必须以任何方式初始化为空,因此额外的行不会给我带来麻烦.但是在返回字符串的字段中构造一个新的StringBuilder有多糟糕?
编辑 我只是想知道,如果把一个StringBuilder构造函数的吸气剂要开拓蠕虫的一个巨大的罐头,是荒谬的开销,一些从来没有在干将样的反模式的东西使用构造函数,等等......不知道大家是最喜欢连接非循环字符串的最佳方式.
EDIT2 getter的常用,最佳实践,性能阈值是什么,StringBuilder构造函数是否低于此值?
我已声明了这样的属性:
private int? platypusLocalId;
public int? PlatypusLocalId
{
get
{
return GetPlatypusLocalIDForPlatypusID(platypusID);
}
}
Run Code Online (Sandbox Code Playgroud)
...期待对platypusLocalId的任何引用,例如:
Dictionary<int, string> duckBillPairs = GetAvailableDuckBillsForPlatypus(platypusLocalId);
Run Code Online (Sandbox Code Playgroud)
...呼叫访问者/获取者; 但是,它没有被调用,因此当传入GetAvailableDuckBillsForPlatypus()时,platypusLocalId因此为null.
所以我有以下代码,我试图添加某种类型的元数据,我想这是一个类的属性.我的想法是,我会有一个getter/setter,其中getter将返回一个float/int/string私有变量,但会返回一些额外的数据,例如详细的名称.
这完全有效,直到我使用setter,曾经使用的似乎忽略了setter和getter.
有谁知道为什么我在做什么不起作用?或者,如果有更好的方法去做我想做的事情?
非常感谢!
class Param(float):
def __new__(self,name,value):
return float.__new__(self,value)
def __init__(self,name,value):
self.__name = name
name = property(lambda self: self.__name)
class Beer:
def __init__(self, temp):
self.__T = temp
@property
def temp(self):
return Param('Beer Temperature', self.__T)
@temp.setter
def temp(self,value):
self.__T = float(value)
print b.temp.name, b.temp.__class__
print b.temp * 4.5
print b.temp.name, b.temp.__class__
b.temp = 101
print b.temp.name, b.temp.__class__
Run Code Online (Sandbox Code Playgroud) 我第一次尝试做一些不是简单练习的OOP就是在java中创建一个程序来存储有关人的信息(比如联系簿).下面是我正在研究的名为Person的类的片段.将来某个时候,其他人将会对其进行实例化.
public class Person {
// Enum of the fields in Person
private static enum Field {NAME, ALIASES, DATE_OF_BIRTH, DATE_OF_DEATH, VITAL_STATUS,
RELATIONSHIPS}
private static enum VitalStatus {ALIVE, DECEASED, ASSUMED_DECEASED, UNKNOWN}
private final int id;
private Name name;
private List<String> aliases;
private GregorianCalendar dateOfBirth;
private GregorianCalendar dateOfDeath;
private VitalStatus vitalStatus;
private List<Relationship> relationships;
// Time field was last updated
private Map<Field, GregorianCalendar> updateTimes;
// Initialise a blank/unknown person
public Person() {
this.id = getNewId();
this.name = new Name(); // Blank name …Run Code Online (Sandbox Code Playgroud) 最近,我在计算机科学课程中完成了一项任务,创建了一个由所述类构建的两个对象的类.
教授通过电子邮件批评的内容如下:"构造函数,getter和setter中的sysouts应该是主要方法."
他不会说英语,所以没有多大帮助.有人知道他在谈论我的代码时到底在说什么吗?这是我提交的代码:
public class Book {
int currentPage;
int nextPage;
int lastPage;
public Book(int pageNumber) {
currentPage = pageNumber;
System.out.println("You've opened the book to page " + currentPage + ".");
}
public void turnForward(int numTurned) {
nextPage = numTurned + currentPage;
System.out.println("You've turned forward to page " + nextPage + ".");
}
public void turnBack(int numTurned) {
lastPage = nextPage - numTurned;
if (lastPage <= 1) {
lastPage = 1;
System.out.println("You've turned back to the first page.");
}else { …Run Code Online (Sandbox Code Playgroud)