标签: getter-setter

获取游戏中对象的位置

我最近开始制作简单的2D游戏,并遇到了两难 - 使用或不使用getter和setter方法来处理对象的x和y位置.如果我不使用方法,但是直接访问变量会更加清晰,而且对对象的许多方法调用会损害性能.此外,获取和设置位置仍然很简单,所以这里真的不需要封装吗?或者我们是否应始终坚持使用getter和setter方法的约定?

java getter-setter

1
推荐指数
1
解决办法
1485
查看次数

为什么C++的复杂类使用getter和setter?

为什么C++复杂类使用函数来修改实部和虚部?公共成员变量是否也可以在不必处理getter和setter的情况下工作?所有被隐藏的是真实和虚构部分的私人名称.

c++ getter-setter

1
推荐指数
2
解决办法
488
查看次数

getter和setter的错误

我有一个顶点向量,我希望将vertice.setVisit设置为false或0.我为此定义了一些getter和setter,但是遇到了一些类型错误.代码如下:

//Vector:
std::vector<project3::Vertex<VertexType, EdgeType>*> Vertice1;

//Class containing methods:
template <class VertexType, class EdgeType> class Vertex{
protected:
    //std::vector<std::pair<int, EdgeType>> VertexList;
    VertexType vertice;
    EdgeType edge;
    int num;
    int mark;
    //int status=0;

public:

    void setNum(int){ this.num = num; }
    int getNum() { return num; }
    int getMark(){ return mark; }
    void setVisit(int) { this.mark = mark; }
};
Run Code Online (Sandbox Code Playgroud)

在某些函数中,我将值分配给它:

for(int i=0; i<g1.Vertice1.size(); i++)
{
    g1.Vertice1.at(i)->setNum(0);
    g1.Vertice1.at(i)->setVisit(0);
}
Run Code Online (Sandbox Code Playgroud)

下面是编译"this.mark = mark"代码和类中函数定义中"this.num = num"的错误.

Error: left of '.mark' must have class/struct/union
 Error: left of '.num' …
Run Code Online (Sandbox Code Playgroud)

c++ vector getter-setter

1
推荐指数
1
解决办法
501
查看次数

使用单一方法设置/获取值而不是两个?

用一个处理两者的方法替换getter和/或setter方法是个好主意吗?

例如:

    function name($what = null){

      if(!$what)
        return $this->name;

      $this->name = $what;
    }
Run Code Online (Sandbox Code Playgroud)

使用如下:

    // get name
    print $obj->name();

    // set name
    $obj->name('bla');
Run Code Online (Sandbox Code Playgroud)

我见过一些框架做到了.它被社区认为是好的还是坏的做法?:P

它似乎更有效,但它看起来有点混乱,因为我习惯于在PHP中使用getThing()和setThing().这种风格让我想起了jQuery.

php coding-style class getter-setter

1
推荐指数
1
解决办法
216
查看次数

Android getter setter返回null数据?

我有一个类ApplicationDetails,使用getter和setter方法.

public class ApplicationDetails {
    String supportURL;
    String companyURL;
    String copyRightText;

    // with getter and setter methods 

}
Run Code Online (Sandbox Code Playgroud)

我在启动画面活动中设置所有数据.

ApplicationDetails appDetails = new ApplicationDetails();
String supportURL = getResources().getString(R.string.support_url);
appDetails.setSupportURL(supportURL);
Run Code Online (Sandbox Code Playgroud)

对于示例我只是从字符串文件设置数据,但在应用程序中它来自不同的来源.

但是当我尝试访问不同活动中的数据时,它返回null值.例如

public class AboutViewController extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ApplicationDetails appDetails = new ApplicationDetails();
        System.out.println(" app support url " + appDetails.getSupportURL());
    }

}
Run Code Online (Sandbox Code Playgroud)

产量

I/System.out(2242):  app support url null
Run Code Online (Sandbox Code Playgroud)

任何帮助.

java getter setter android getter-setter

1
推荐指数
1
解决办法
3671
查看次数

Ruby/Rails:了解ruby getter-setter方法和实例

我是ruby和编程的新手,我正在尝试掌握一些关键概念.鉴于我有一类狗,具有以下特点.

class Dog
  attr_accessor :type, :popularity, :total

  def initialize(type = nil)
    @type = type
  end

  def total_dogs
    Dog.count
  end

  def total
    Dog.where(:type => self.type).size
  end

  def popularity
    total.to_f/total_dogs
  end
end
Run Code Online (Sandbox Code Playgroud)

我想要了解的是,ruby如何通过getter/setter方法将属性持久化到实例.我清楚地知道,如果我实例化一个新实例然后将属性保存到该实例,那么这些属性就绑定到该实例,因为如果我查看该对象,则属性如下所示:

 @dog = Dog.new
 @dog
 => #<Dog:0x007fa8689ea238 @type=nil> 
Run Code Online (Sandbox Code Playgroud)

我很容易理解,当我传递@dog对象时,总是将@type属性作为nil.但是,我理解的情况是我将这个@dog对象传递给另一个类.就像我做的那样:

 Owner.new(@dog)
Run Code Online (Sandbox Code Playgroud)

当我在所有者类中并且我调用@ dog.popularity时,它如何知道该实例的流行度值?在运行时,所有方法都被处理,然后该实例总是与当时的值绑定?抱歉,如果这没有意义,或者我离开了.

ruby ruby-on-rails getter-setter ruby-on-rails-3

1
推荐指数
1
解决办法
7541
查看次数

Python setter也返回值

我想知道是否可以有一个属性设置器来返回一个值。下面的代码试图从表面上解释问题。

基本上,我需要为对象设置一个属性,但是在我需要检查它是否唯一之前。我想知道是否有一种方法可以直接将唯一名称返回给用户,而无需在此后查询对象的新名称。

class MyClass(object):
    def __init__(self,ID):
        self._ID = ID
    @property
    def Name(self):
        return DBGetName(self._ID)

    @Name.setter
    def Name(self, value):
        UniqueName = DBGetUniqueName(self._ID,value)
        return DBSetName(UniqueName)

Myinstance = MyClass(SomeNumber)
#What I do now
Myinstance.Name = "NewName"
Uniquename = Myinstance.Name

#What I was wondering if possible. Line below is syntactically invalid, but shows the idea.
Name = (Myinstance.Name = "NewName")
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个伪代码,我忘了实际将值传递给内部函数。我的错。

python setter decorator getter-setter python-3.x

1
推荐指数
1
解决办法
2185
查看次数

在Swift 3中覆盖属性

我想覆盖以下类中的属性.假设我有一个A具有布尔属性的类r.对于超类A,我希望r被设置并获得正常.对于子类B,我想r永远是false.我不确定为什么这比它应该更难......

class A {
    init(r: Bool) {
        self.r = r
    }

    var r: Bool {
        willSet(n) {
            r = n
        }
        get {
            return r
        }
    }
}

class B: A {
    override var r: Bool {
        willSet(n) {
            r = n
        }
        get {
            return false
        }
    }
}

let a = A(r: true)
a.r = false
print(a.r)  // prints 'false', which is good

let …
Run Code Online (Sandbox Code Playgroud)

inheritance getter-setter swift

1
推荐指数
1
解决办法
1132
查看次数

Javascript:无法调用getter

class Clock {
    constructor() {
        this.schedule = [];
        this.simulationTime = 0;
    }

    get isEmpty() {
      return this.schedule == false;
    }

    popFirstItem(){
      if(isEmpty){
        throw "error";
      }
    }
};  
Run Code Online (Sandbox Code Playgroud)

我希望isEmpty()popFirstItem()方法中调用getter .但是,我无法做到.什么是调用的正确方法isEmpty()popFirstItem()方法是什么?

javascript getter-setter

1
推荐指数
1
解决办法
51
查看次数

在JavaScript中,如果我分配给具有getter但没有setter的对象属性会发生什么?

在以下代码中,两者都使用console.log(o.x)print 1.任务会o.x = 2怎样?它被忽略了吗?

var o = {
    get x() {
        return 1;
    }
}

console.log(o.x);  // 1
o.x = 2
console.log(o.x);  // 1
Run Code Online (Sandbox Code Playgroud)

javascript properties object getter-setter

1
推荐指数
1
解决办法
39
查看次数