Tag: 访问者

在接口定义中可以使用getters / setter吗?

目前, TypeScript不允许在接口中使用get / set方法(访问器)。 例如: interface I { get name():string; } class C implements I { get name():string { return null; } } 此外,TypeScript不允许在类方法中使用数组函数expression式:例如: class C { private _name:string; get name():string => this._name; } 有没有其他方法可以在接口定义上使用getter和setter?

访问者模式中的accept()方法的要点是什么?

关于从类中去除algorithm的讨论有很多。 但是,有一件事暂时没有解释。 他们使用这样的访客 abstract class Expr { public <T> T accept(Visitor<T> visitor) {visitor.visit(this);} } class ExprVisitor extends Visitor{ public Integer visit(Num num) { return num.value; } public Integer visit(Sum sum) { return sum.getLeft().accept(this) + sum.getRight().accept(this); } public Integer visit(Prod prod) { return prod.getLeft().accept(this) * prod.getRight().accept(this); } 访问者不是直接调用visit(element),而是要求该元素调用其访问方法。 它与class级对游客不了解的观点相矛盾。 PS1请用你自己的话来解释或指出确切的解释。 因为我得到的两个回答是指一些普遍而不确定的东西。 PS2我的猜测:因为getLeft()返回基本Expression ,所以调用visit(getLeft())将导致visit(Expression) ,而getLeft()调用visit(this)将导致另一个更合适的访问调用。 所以, accept()执行types转换(又名铸造)。 […]

Swift是什么“get”和“set”?

我正在学习Swift,我正在阅读从Apple The Swift Programming Language ,我没有Objective C背景(只有PHP,JS和其他,但没有Obj C) 在第24-25页我看到这个代码: //…Class definition stuff… var perimeter: Double { get { return 3.0 * sideLength } set { sideLength = newValue / 3.0 } } //…Class continues… 这部分没有在书中指定,我不明白这是什么。 任何人都可以解释我得到和设置是什么?

如果可能的话,有人可以简单地向我解释访问者模式的用途

我对访客模式及其用途感到困惑。 我似乎无法想象使用这种模式或其目的的好处。 如果有人能够用可能的例子来解释,那就太棒了。 =) 提前致谢