我正在尝试运行此代码,但它给了我以下错误:
Animal.ts(10,13):错误TS1056:访问者仅在定位ECMAScript 5及更高版本时可用.Animal.ts(14,13):错误TS1056:访问者仅在定位ECMAScript 5及更高版本时可用.
interface IAnimal{
name : string;
sayName():string;
}
class AnimalImpm implements IAnimal{
private _name : string = '[Animal]';
get name():string{
return this._name;
}
set name(name:string){
this._name = name;
}
constructor(name:string){
this.name = name;
}
sayName():string {
console.log(`My name is ${this.name}`);
return "Hello";
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个键盘快捷方式来完成为C#类中的属性创建默认访问器.
像......
我开始输入:
public int Id
Run Code Online (Sandbox Code Playgroud)
然后我按下一个或多个键,我最终得到:
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud) 当我们定义一个属性时
public string Name {get; set;}
Run Code Online (Sandbox Code Playgroud)
dot net可以使我们的属性代码.但是当我们使用时
public string Name {get;}
public string Name {set;}
Run Code Online (Sandbox Code Playgroud)
我们面对
'Hajloo.SomeThing.PropertyName.set' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.
Run Code Online (Sandbox Code Playgroud)
实际上为什么编译器无法确定属性并自动生成代码?有什么问题?
我坚持使用objective-c属性.我需要的是为变量分配一个只写属性,与readonly完全相反,即变量可以有setMethod
,但它不应该有getMethod
.我不知道怎么做.一些代码片段的答案表示赞赏.
给出以下方法:
public function setFoo($foo) {
$this->_foo = $foo;
return $this;
}
public function getFoo() {
return $this->_foo;
}
Run Code Online (Sandbox Code Playgroud)
假设,未来可能会更改为更复杂:
@covers
注释怎么样?(我使用Netbeans 7)
这似乎是浪费时间,但我不介意IDE是否会自动生成这些测试方法.
(就像测试getter和setter一样 - 失败!).无论如何,如果他们失败了; 那些依赖它们的方法不会失败吗?
那么,代码覆盖怎么样?
几个月前我刚刚开始学习Python,我试图理解不同__get*__
方法之间的差异:
__get__
__getattr__
__getattribute__
__getitem___
Run Code Online (Sandbox Code Playgroud)
他们的__del*__
等价物:
__del__
__delattr__
__delete__
__delitem__
Run Code Online (Sandbox Code Playgroud)
这些有什么区别?我什么时候应该使用另一个?是否有一个特定的原因,为什么大多数__get*__
方法都有__set*__
等价物,但没有__setattribute__
?
我在很多地方都读过"吸气鬼和恶魔都是邪恶的".我理解为什么这样.但我不知道如何完全避免它们.Say Item是一个包含项目名称,数量,价格等信息的类......而ItemList是一个类,它有一个Items列表.要找到总计:
int grandTotal() { int total = 0; for (Item item: itemList) total += item.getPrice(); return total; }
在上面的例子中,如何避免getPrice()?Item类提供了getName,setName等....
我该如何避免它们?
我按名称获取类,我需要使用相应的数据更新它们,我的问题是如何使用java我想要添加方法一些虚拟数据.我不知道类类型我只是获取类名并使用反射来获取他的数据
我使用此代码来获取类实例和
Class<?> classHandle = Class.forName(className);
Object myObject = classHandle.newInstance();
// iterate through all the methods declared by the class
for (Method method : classHandle.getMethods()) {
// find all the set methods
if (method.getName().matches("set[A-Z].*")
Run Code Online (Sandbox Code Playgroud)
并且知道我找到了我想用数据更新它的set方法的列表我该怎么做.
假设在类名中我得到了人,而且类有setSalary和setFirstName等我怎样才能用反射设置它们?
public class Person {
public void setSalery(double salery) {
this.salery = salery;
}
public void setFirstName(String FirstName) {
this.FirstName = FirstName;
}
}
Run Code Online (Sandbox Code Playgroud) 有没有人见过人们这样做:
private string _name;
public string Name{ get{ return _name; } set{ _name = value;}}
Run Code Online (Sandbox Code Playgroud)
我理解使用访问器,如果你要对它如何设置进行某种控制,或者在有get时对其执行某种功能.但是如果你只是要这样做,为什么不把变量公之于众?我错过了什么吗?
我现在从几个来源(stackoverflow.com,cocoa-dev,文档,博客等)中听到,在init和dealloc方法中使用访问器和设置(foo,setFoo :)是"错误的".据我所知,如果你这样做,很可能会混淆其他正在观察财产的物体.(这里给出一个简单的例子)
但是,由于以下原因,我不得不说我不同意这种做法:
新的Objective-C运行时(iPhone上的那个和10.5中的64位运行时)允许您在不声明相应的ivar的情况下声明属性.例如,以下类将在10.5或iPhone(设备,而不是模拟器)上编译得很好:
@interface Foo : NSObject { }
@property (retain) id someObject;
@end
@implementation Foo
@synthesize someObject;
@end
Run Code Online (Sandbox Code Playgroud)
理解上面是一个完全有效的Objective-C类,假设我决定编写一个初始化程序,并且出于内存管理的目的,使用dealloc方法(因为在iPhone上没有GC).我读过有关初始化器和释放器的所有内容都会让我编写以下两种方法:
- (id) init {
if (self = [super init]) {
//initialize the value of someObject to nil
[self setSomeObject:nil];
}
return self;
}
- (void) dealloc {
//setting someObject to nil will release the previous value
[self setSomeObject:nil];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
但是,根据文件和流行的观点,这是"错误的".所以我的问题是这样的:
如果其中任何一个的答案是"你不能",那么在init和dealloc方法中使用访问器怎么可能不好?
accessor ×10
properties ×4
c# ×3
objective-c ×2
oop ×2
dealloc ×1
ecmascript-5 ×1
get ×1
iphone ×1
java ×1
javascript ×1
ooad ×1
php ×1
phpunit ×1
python ×1
reflection ×1
set ×1
typescript ×1
unit-testing ×1