我有一些我在C#中定义的变量:
public String firstName { get; set; }
public String lastName { get; set; }
public String organization { get; set; }
Run Code Online (Sandbox Code Playgroud)
我想要的是在尝试设置值时为这些方法添加验证.让我们说你要为firstName设置一个值,我应该通过thrue一个正则表达式来设置,否则应该抛出一个异常.这可能是用这种"短语法"构建的,还是我应该选择标准(如JAVA)getter和setter并在那里验证数据?
假设我有一个带有私有变量x的c ++类.对于它的制定者,使用有什么区别this吗?是否有可能出现意外/意外行为this?我不使用?
二传手:
void setX(double input)
{
x = input;
}
Run Code Online (Sandbox Code Playgroud)
二传手使用this:
void setX(double x)
{
this->x = x;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为php对象实现一些自动getter和setter.
我的目标是自动为每个属性的方法getProperty()和setProperty(value),这样,如果没有为脚本只是设置一个属性来实现或获得的价值的方法.
一个例子,让自己清楚:
class Foo {
public $Bar;
}
$A = new A();
$A->setBar("bar");
$A->getBar(); // -> output "bar"
Run Code Online (Sandbox Code Playgroud)
要么
class Foo {
public $Bar;
public function setBar($bar) { $Bar = $bar; }
public function getBar($bar) { return 'the value is: ' . $bar; }
}
$A = new A();
$A->setBar("bar");
$A->getBar(); // -> output "the value is: bar"
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一点的任何想法/提示?
我有一个属性setter,它通过获取两个字符串并对其进行散列来生成一个唯一的id:
@id.setter
def id(self,value1,value2):
self._id = sha512(value1+value2)
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
我有一个简单的问题,在头文件中实现getter和setter是一个好习惯吗?
class WebsocketSession : public boost::enable_shared_from_this<WebsocketSession>{
public:
WebsocketSession(boost::asio::io_service& io_service, WebsocketServer& server);
tcp::socket& getSocket() { return socket_; } // <--- This
private:
tcp::socket socket_;
WebsocketServer& server_;
};
Run Code Online (Sandbox Code Playgroud) 随着cobertura-maven-plugingetter和setter方法可排除使用代码覆盖ignoreTrivial选项.是否还有这种可能性jacoco-maven-plugin?
这是我目前的配置:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.1.201405082137</version>
<configuration>
<excludes>
<exclude>com/welovecoding/web/blog/test/**/*.class</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>amend-unit-test-java-agent-option</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) 想知道是否可能,例如,如果我从TextBox中删除边框,并且我想在鼠标悬停时将其默认边框恢复.
<Style TargetType="TextBox">
<Setter Property="BorderBrush" Value="{x:Null}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="?????"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我以为我可以使用它,但最后隐藏边界似乎是一个坏主意,但问题仍然存在.(我知道在这种情况下,如果鼠标不在TextBox上,我可以将Trigger反转为仅删除边框)
我正在编写一个使用__setattr__和__getattr__提供自定义属性访问的python类.
但是,某些属性无法以通用方式处理,因此我希望使用描述符.
出现的问题是,对于描述符,__get__将调用描述符以支持实例__getattr__,但是当分配给属性时,__setattr__将调用以支持描述符__set__.
一个例子:
class MyDesc(object):
def __init__(self):
self.val = None
def __get__(self, instance, owner):
print "MyDesc.__get__"
return self.val
def __set__(self, instance, value):
print "MyDesc.__set__"
self.val = value
class MyObj(object):
foo = MyDesc()
def __init__(self, bar):
object.__setattr__(self, 'names', dict(
bar=bar,
))
object.__setattr__(self, 'new_names', dict())
def __setattr__(self, name, value):
print "MyObj.__setattr__ for %s" % name
self.new_names[name] = value
def __getattr__(self, name):
print "MyObj.__getattr__ for %s" % name
if name …Run Code Online (Sandbox Code Playgroud) 如果你有多个属性在setter中实现相同的方法,有没有办法让它成为默认setter的一部分?
如果我有多个属性Filter()在设置时调用它,是否有办法将其推入"基本setter",这样我就不必Filter()在每个setter中都有调用?
private string _MyVal1;
public string MyVal1 {
get {
return _MyVal1;
}
set {
_MyVal1 = value;
Filter();
OnPropertyChanged("MyVal1");
}
}
private string _MyVal2;
public string MyVal2 {
get {
return _MyVal2;
}
set {
_MyVal2 = value;
Filter();
OnPropertyChanged("MyVal2");
}
}
private string _MyValN;
public string MyValN {
get {
return _MyValN;
}
set {
_MyValN = value;
Filter();
OnPropertyChanged("MyValN");
}
}
Run Code Online (Sandbox Code Playgroud)
所以它变成了这样:
private string _MyValN;
public string MyValN {
get {
return …Run Code Online (Sandbox Code Playgroud) 我下面有一个简单的课程
import Foundation
public class UsefulClass: NSObject{
var test:NSNumber{
get{return self.test}
set{
println(newValue)
self.test = newValue
}
}
override init() {
super.init()
self.test = 5;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里初始化它
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var testClass = UsefulClass()
}
}
Run Code Online (Sandbox Code Playgroud)
但是由于EXC_BAD_ACCESS代码= 2,它会导致xcode打印出200 5s然后崩溃.为什么会发生这种情况?
setter ×10
getter ×4
c# ×2
c++ ×2
properties ×2
python ×2
attributes ×1
descriptor ×1
jacoco ×1
oop ×1
php ×1
styles ×1
swift ×1
this ×1
wpf ×1
wpf-controls ×1