这可能是一个愚蠢的问题,但无论如何我都会问它......我正在用C#.NET编程.我有一个包含非静态实例EventHandler的类.是否可以为静态方法中存在的类的每个实例触发该EventHandler?我知道这是一个很长的镜头!
在C++中,是否可以在该实例的构造函数完成之前调用实例的函数?
例如,如果A的构造函数实例化B,B的构造函数调用A的一个函数.
我有一个程序可以创建我自己的Class的许多实例.然后我操作它们:读取,更改,将它们传递给某些第三方方法等.
有三个问题.
我是否存储实例向量或指针向量?为什么?
如果我不希望做我传递给函数的一个实例或指向它改变一个实例?为什么?
如果我不希望改变的情况下,我通过指针或引用?为什么?
提前致谢!
类示例:
class Player {
public:
static const char width = 35;
static const char height = 5;
static const char speed = 15;
int socketFD;
float xMin;
float xMax;
char status;
float x;
float y;
char direction;
Player ( int );
void Reset();
void Move();
void SetHost();
void SetClient();
private:
void EscapeCheck();
};
Run Code Online (Sandbox Code Playgroud) 这是一段Java代码:
static {
ture = 9;
}
static int ture;
{ // instance block
System.out.println(":"+ture+":");
}
Run Code Online (Sandbox Code Playgroud)
它是如何编译的?初始化后已执行变量'ture'的声明.据我所知,静态块和字段按照它们出现的顺序执行.
现在为什么实例块中的值9已被打印3次?顺便说一下,类的实例已经创建了3次.这不是作业,我正在学习Java认证.
这是一个有效的python行为吗?我认为最终结果应该是[0,0,0]并且id()函数应该在每次迭代时返回相同的值.如何使它成为pythonic,而不是使用枚举或范围(len(bar))?
bar = [1,2,3]
print bar
for foo in bar:
print id (foo)
foo=0
print id(foo)
print bar
Run Code Online (Sandbox Code Playgroud)
输出:
[1, 2, 3]
5169664
5169676
5169652
5169676
5169640
5169676
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud) 给定一个元类或更简单的,type()最后一个参数代表类dict,它是一个负责类变量的类.我想知道,有没有办法从元类中设置实例变量?
我使用元类的原因是我需要收集在类创建时定义的一些变量并处理它们.但是,这个处理的结果需要附加到类的每个实例,而不是类本身,因为结果将是一个列表,它将从一个类的实例到另一个实例不同.
我将提供一个示例,以便更容易关注我.
我有一个Model类,定义如下:
class Model(object):
__metaclass__ = ModelType
has_many = None
def __init__(self, **kwargs):
self._fields = kwargs
Run Code Online (Sandbox Code Playgroud)
本has_many 类变量在类定义的任何模型有人觉得有必要填写.在__init__(),我只是将模型实例化中提供的关键字分配给实例变量_fields.
然后我有了ModelType元类:
class ModelType(type):
def __new__(cls, name, bases, dct):
if 'has_many' in dct:
dct['_restricted_fields'].append([has-many-model-name])
Run Code Online (Sandbox Code Playgroud)
我在这里需要做的非常简单.我检查是否有人在他的自定义模型类上定义了has_many 类变量,然后将变量的内容添加到受限字段列表中.
现在是重要的一部分.当实例化的模型,我需要_fields待由两者的关键字用于实例化模型参数和限制字段,如在元类处理.如果_fields是类中的类变量,这将非常容易Model,但由于它是一个实例变量,我不知道如何将限制字段添加到它.
话虽如此,有没有办法实现这一目标?或者有更好的方法来处理这个问题吗?(我想只使用一个元类并_restricted_fields在模型上设置一个类变量,然后在类中使用这个变量__init__()将受限字段添加到普通字段中,但很快模型类就会混杂代码,在我看来,应该在代码的另一部分休息).
我想写一个泛型方法(使用泛型或param)
这将取代这两个电话:
private ServerEvent filterEvents() {
return argThat(new ArgumentMatcher<ServerEvent>() {
@Override
public boolean matches(Object argument) {
return argument instanceof Type1;
}
});
private ServerEvent filterEvents() {
return argThat(new ArgumentMatcher<ServerEvent>() {
@Override
public boolean matches(Object argument) {
return argument instanceof Type2;
}
});
Run Code Online (Sandbox Code Playgroud)
我试过这个,但得到了编译错误:
private <T> ServerEvent filterEvents() {
return argThat(new ArgumentMatcher<ServerEvent>() {
@Override
public boolean matches(Object argument) {
return argument instanceof T;
}
});
Run Code Online (Sandbox Code Playgroud)
更新:
我也尝试了这个,但仍然有编译错误:
verify(loggerUtilsWrapper).writeEvent(filterEvents(MatchNotFoundEvent.class));
private ServerEvent filterEvents(final Class<MatcherEvent> eventType) {
return argThat(new ArgumentMatcher<ServerEvent>() {
@Override
public boolean …Run Code Online (Sandbox Code Playgroud) 我正在研究一个小型符号库,用Haskell执行一些计算.
为了表示符号操作,我创建了这种数据类型:
data MathExpress = -- A math expression
MathDouble Double -- Represent a number
| MathAdd MathExpress MathExpress -- Add 2 expressions
| MathSoust MathExpress MathExpress -- Subtract 2 expressions
| ...
Run Code Online (Sandbox Code Playgroud)
我设法创建一个Num实例,以便能够使用运算符+和-我的类型MathExpress.
instance Num MathExpress where
(+) (expa) (expb) = MathAdd expa expb
(-) (expa) (expb) = MathSoust expa expb
...
Run Code Online (Sandbox Code Playgroud)
当我写:
( MathExpress expression ) * MathDouble 2.0
Run Code Online (Sandbox Code Playgroud)
它的工作原理!
现在,我希望能够使用+和-数字(Double或Int)编写更简单:
( …Run Code Online (Sandbox Code Playgroud) 假设我们有一个类World,我们已经声明了dreamWorld该类的实例.情况1如何与案例2不同,除了它的一条线更短?在第二种情况下实例化实际上有什么区别?我的意思是,dreamWorld在这两种情况下,afterall 都是一样的,对吧?
案例1:
void changeWorld(World outerWorld) {
World dreamWorld;
dreamWorld = outerWorld;
}
Run Code Online (Sandbox Code Playgroud)
案例2:
void changeWorld(World outerWorld) {
World dreamWorld;
dreamWorld = new World();
dreamWorld = outerWorld;
}
Run Code Online (Sandbox Code Playgroud)
where outerWorld是World在别处创建的类的对象,比如说,作为方法参数提供(我不确定它是如何提供的重要).
PS 谢谢你所有的提示和有用的回复,伙计们,对不起我的延迟感谢(我花了很多时间阅读一些我觉得有必要完全理解你的回复的文献).
我有一个可能很愚蠢的问题,但我是C#的新手,所以请原谅我的傲慢.我想知道函数是否有可能引用一个由另一个函数创建的实例.
我包含一个示例代码来说明我的意思:
class Program
{
static void Main(string[] args)
{
Instantiator.Instantiate();
Referent.Refer(instance);
Console.ReadLine();
}
}
public class Instance
{
public void OnInstantiated()
{
Console.WriteLine("I have been instantiated.");
}
public void OnReferred()
{
Console.WriteLine("I have been referred to.");
}
}
public class Instantiator
{
public static void Instantiate()
{
Instance instance = new Instance();
instance.OnInstantiated();
}
}
public class Referent
{
public static void Refer(Instance instance)
{
if(instance != null)
{
instance.OnReferred();
}
else
{
Console.WriteLine("No instance to refer to.");
} …Run Code Online (Sandbox Code Playgroud)