标签: setter

"LValue"不代表我认为的意思吗?

在以下代码中:

_imageView.hasHorizontalScroller = YES;
_imageView.hasVerticalScroller = YES;
_imageView.autohidesScrollers = YES;

NSLog(@"scrollbar? H %p V %p hide %p", 
      &(_imageView.hasHorizontalScroller), 
      &(_imageView.hasVerticalScroller),
      &(_imageView.autohidesScrollers));
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Controller.m:143: error: lvalue required as unary '&' operand
Controller.m:144: error: lvalue required as unary '&' operand
Controller.m:145: error: lvalue required as unary '&' operand
Run Code Online (Sandbox Code Playgroud)

请注意,我在&行之前直接使用这些变量作为左值...

在我没有错误地分配给它之后,它怎么能抱怨一个值不是左值?这与目标C创造的神奇的吸气剂/孵化器有关吗?

我想我需要解释一些上下文来解释为什么我想要获取地址:

在我之前的SO帖子中,我展示了相同的代码,打印%d并发现在分配后,由于某种原因,属性仍为0.所以,我想我会尝试获取属性的地址以查看它们存储的位置,也许我可以弄清楚为什么我没有成功分配给它们,然后就发生了这种情况.

我认为,正如人们提到的那样,是的,可能是当我做这个分配时,obj-c秘密用一个叫做二传手的东西替换它(然后是另一个魔法,因为在另一个SO帖子中,有人提到了

BOOL b = [_imageView setHasVerticleScroller: YES]
Run Code Online (Sandbox Code Playgroud)

失败了,但是

BOOL b = _imageView.hasVerticalScroller = YES;
Run Code Online (Sandbox Code Playgroud)

工作良好.

setter objective-c lvalue

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

接近无副作用的二传手

我希望得到你的意见,与无副作用的制定者有多远.

请考虑以下示例:

Activity activity;
activity.Start    = "2010-01-01";
activity.Duration = "10 days";   // sets Finish property to "2010-01-10"
Run Code Online (Sandbox Code Playgroud)

请注意,日期和持续时间的值仅用于指示目的.

因此,使用设定器用于任何属性Start,Finish并且Duration将因此改变其他特性,因此不能被认为是侧无效.同样适用于实例Rectangle类,其中制定者X正在改变的价值观TopBottom等.

问题是你在哪里使用setter之间画一条线,它们具有改变逻辑相关属性值的副作用,以及使用方法,这些方法无论如何都不会更具描述性.例如,定义一个名为的方法SetDurationTo(Duration duration)也不会反映Start或Finish将被更改.

c# setter properties

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

将getter和setter用于不同的编程语言

所以我知道有很多关于getter和setter的问题,但我找不到与我的问题完全相同的东西.我想知道人们是否根据不同的语言改变了get/set的使用.我开始学习C++,并被教导使用getter和setter.这就是我的理解:

在C++(和Java?)中,变量可以是公共的也可以是私有的,但我们不能混合使用.例如,我不能拥有一个只能在类中更改的只读变量.它可以全部公开(可以读取和更改),也可以全部是私有的(无法读取,只能在课堂内更改).由于这个(以及可能的其他原因),我们使用getter和setter.

在MATLAB中,我可以控制变量的"setaccess"和"getaccess"属性,这样我就可以将事物设为只读(可以直接访问属性,但不能覆盖它).在这种情况下,我不觉得我需要一个getter因为我可以做class.property.

此外,在Python中,它被认为是"Pythonic",不使用getter/setter,只在需要时才将东西放入属性中.我真的不明白为什么在Python中使用所有公共变量都可以,因为这与我在使用C++时所学到的相反.

我只是好奇其他人的想法是什么.你会为所有语言使用getter和setter吗?您是否只将它用于C++/Java并在MATLAB和Python中直接访问(这是我目前正在做的)?第二种选择被认为是不好的吗?就我的目的而言,我只是指简单的getter和setter(只返回/设置值,不做任何其他事情).

谢谢!

c++ python getter setter matlab

5
推荐指数
2
解决办法
1613
查看次数

将Setter值绑定到DynamicResource

我正在代码中创建触发器,我正在尝试将setter的值绑定到后面代码中创建的动态资源,这样我就可以更新资源,并且仍然可以更新setter的值.我就此而已

SolidColorBrush brush = Brushes.Red;
Resources.Add("NewBrush",brush);
Setter setter = new Setter();
setter.Property = Control.BackgroundProperty;
Run Code Online (Sandbox Code Playgroud)

但我不确定如何将setter的值绑定到创建的动态资源.我不能简单地在XAML中创建资源,因为资源需要动态创建.如何将Setter的值绑定到动态资源,因此更改资源将改变setter的值.

更多信息要澄清.这都是在代码后面完成的,因为一切都是动态生成的.触发器,设置器,格式化,控件都是基于XML结构创建的.

wpf setter binding dynamicresource

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

Automapper是否应该与私人制定者OOB合作?

我有一个嵌套的子类,其公共属性与私有setter.在父类中,我能够使用Automapper映射到子类,并且正在设置私有setter的值.我读过的所有内容都指向Automapper不支持这一点,并要求子类中的自定义构造函数来填充私有setter.

当前版本是否使用反射或其他东西来映射私有的setter?安装程序肯定是私有的,因为在父类中我无法设置Child.Property但在同一个地方Mapper.Map能够设置属性.

.net c# setter private automapper

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

使用自定义_ =进行Scala自动getter和setter覆盖

在scala中,类的用户在调用方法或使用val x = myclass.myproperty直接访问某个字段/成员之间没有区别.为了能够控制例如设置或获取字段,scala让我们覆盖_ =方法.但是=真的是一种方法吗?我很迷惑.

我们来看下面的代码:

class Car(var miles: Int)

var myCar = new Car(10)
println(myCar.miles) //prints 10
myCar.miles = 50
println(myCar.miles) //prints 50
Run Code Online (Sandbox Code Playgroud)

此代码也是如此(注意双空格myCar.miles = 50):

class Car(var miles: Int)

var myCar = new Car(10)
println(myCar.miles) //prints 10
myCar.miles  = 50
println(myCar.miles) //still prints 50
Run Code Online (Sandbox Code Playgroud)

现在我想改变如何miles设置或读取的方式,例如总是在屏幕上打印一些东西.我怎么能这样做,以便我的类的用户不受影响,并且如果在=符号之前使用空格,它没有任何区别?

getter setter overriding scala class

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

没有getter的Swift实现setter

如何在Swift中实现没有getter的setter?我需要在设置值时调用方法:

var selectedIndex : Int{
    set {
        selectItemAtIndex(newValue)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在Swift中,你需要同时使用getter和setter,而不仅仅是一个.

getter setter swift

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

c#修改getter/setter但保留简短形式

我需要在C#setter中进行一次小检查 - 检查属性是否为空字符串.现在我最终得到了这样的结构:

        private string property;
        public string Property
        {
           get
           {
              return property;
           }
           set
           {
              if (value.IsNotEmpty())
              {
                   property = value;
              }
           }
        }
Run Code Online (Sandbox Code Playgroud)

代替

public string Property { get; set; }
Run Code Online (Sandbox Code Playgroud)

6行代替1.有没有办法插入逻辑,但保持它浓缩和优雅?

c# getter setter

5
推荐指数
2
解决办法
1244
查看次数

访问JavaScript对象的默认getter/setter

可以使用覆盖特定属性的JavaScript getter和setter Object.defineProperty.有没有办法访问默认的getter/setter(即如果getter/setter没有被覆盖则使用的函数)?在我的自定义setter中,我想在某些情况下进行特殊处理,但在其他情况下使用默认处理.我试过了:

Object.defineProperty(obj, 'foo',
  'set': function(val) {
    if (useCustom) {
      doCustomProcessing(obj, 'foo', val);
    }
    else {
      obj['foo'] = val;
    }
  }
);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会导致堆栈溢出,因为obj['foo'] = val;会导致调用自定义setter.所以我想找到一种方法来设置使用默认setter 的foo属性obj.这可能吗?

javascript getter setter defineproperty

5
推荐指数
2
解决办法
2210
查看次数

Domen驱动的架构和用户拼写错误/错误

DDD教我们像我们的真实世界原型一样构建我们的类.

所以不要使用setter

job = new Job
job.person = person
job.since = time.Now()
job.title = title
Run Code Online (Sandbox Code Playgroud)

我们在聚合根中定义了命名良好的方法

job = person.promote(title, /** since=time.Now() **/)
Run Code Online (Sandbox Code Playgroud)

现在是棘手的部分

假设我们有一个title人工智能的用户界面,他/她通过HTML表单输入新内容并制作一个类似"prgrammer"的拼写错误(当然在实际应用中有一个选择列表,但这里我们有一个文本输入),或选择错误的日期(如今天默认)

现在我们遇到了问题.现实世界中没有拼写错误.我们的John Doe绝对是一名"程序员"而且绝不是"程序员"

我们如何在域模型中解决这个错误?

我们Person刚刚promote,demote,fire,等方法,反映了人力资源领域模型.

我们可以稍微欺骗并Job直接更改记录,但现在我们有一个Job.setTitle方法,它不反映我们的域模型,而且,setter是邪恶的,你知道.

这可能看起来有点"学术性",但当我尝试为复杂的应用程序构建一个好的域模型时,这真的让我感到困惑

setter encapsulation domain-driven-design

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