我有一个Set类(这是J2ME,所以我对标准API的访问权限有限;只是为了解释我明显的轮子改造).我正在使用我的set类在类和子类中创建常量集.它看起来像这样......
class ParentClass
{
protected final static Set THE_SET = new Set() {{
add("one");
add("two");
add("three");
}};
}
class SubClass extends ParentClass
{
protected final static Set THE_SET = new Set() {{
add("four");
add("five");
add("six");
union(ParentClass.THE_SET); /* [1] */
}};
}
Run Code Online (Sandbox Code Playgroud)
除了[1]处的行导致空指针异常外,所有看起来都很好.据推测,这意味着子类中的静态初始化程序在父类的运行之前运行.这让我感到惊讶,因为我认为它会先在任何新的导入中运行静态块,然后再在instatiated子类中运行.
我在这个假设中是对的吗?有没有办法控制或解决这种行为?
更新:
事情甚至更奇怪.我尝试了这个(注意'new ParentClass()'行):
class ParentClass
{
public ParentClass()
{
System.out.println(THE_SET);
}
protected final static Set THE_SET = new Set() {{
add("one");
add("two");
add("three");
}};
}
class SubClass extends ParentClass
{
protected final static Set THE_SET = new …Run Code Online (Sandbox Code Playgroud) 我的页面设计迫使我用我通过ajax加载的html刷新整个页面.
$('html').replaceWith(data);
给我错误.有任何想法吗?
我通过JavaScript从文本框中提取值.如果文本框为空,则返回NaN.我想返回一个空字符串,如果它是null,空,等等.
我该怎么办?if(NAN = tb.value)?
我想声明一个返回指向同一类型函数的指针的函数.
我想用它来实现如下所示的状态机:
typedef event_handler_t (*event_handler_t)(event_t*); // compilation error
event_handler_t state2(event_t* e);
event_handler_t state1(event_t* e) {
switch(e->type) {
//...
case SOME_EVENT:
return state2;
//...
}
}
event_handler_t state2(event_t* e) {
switch(e->type) {
//...
case OTHER_EVENT:
return state1;
//...
}
}
//...
event_handler_t event_handler;
//...
event_handler(&e);
//...
Run Code Online (Sandbox Code Playgroud)
我设法使用如下结构解决compliation错误:
typedef struct event_handler {
struct event_handler (*func)(event_t *);
} event_handler_t;
Run Code Online (Sandbox Code Playgroud)
但这会使返回声明更加复杂:
event_handler_t state2(event_t* e) {
{
event_handler_t next_handler = {NULL};
switch(e->type) {
//...
case OTHER_EVENT:
next_handler.func = state1;
break;
//...
}
return next_handler;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用NerdDinner应用程序试图自学ASP.NET MVC.但是,我偶然发现全球化问题,我的服务器使用逗号作为小数分隔符显示浮点数,但虚拟地球地图需要点数,这会导致一些问题.
我已经在我的视图中解决了映射JavaScript的问题,但是如果我现在尝试发布带有点作为十进制分隔符的已编辑的晚餐条目,则控制器InvalidOperationException在更新模型时失败(抛出)(在UpdateModel()metod中).我觉得我必须在控制器的某个地方设置适当的文化,我尝试了OnActionExecuting()但是没有帮助.
背景: Trevor正在使用标准算法的PHP实现:获取一组主要的默认名称 - 值对,并更新这些名称 - 值对,但仅限于那些实际存在有效更新值的名称 - 值对.
问题:默认情况下,PHP array_merge的工作方式如下......它将使用空值覆盖非空值.
$aamain = Array('firstname'=>'peter','age'=>'32','nation'=>'');
$update = Array('firstname' => '','lastname' => 'griffin', age =>'33','nation'=>'usa');
print_r(array_merge($aamain,$update));
/*
Array
(
[firstname] => // <-- update set this to blank, NOT COOL!
[age] => 33 // <-- update set this to 33, thats cool
[lastname] => griffin // <-- update added this key-value pair, thats cool
[nation] => usa // <-- update filled in a blank, thats cool.
)
*/
Run Code Online (Sandbox Code Playgroud)
问题:执行array_merge的代码行最少的方法是什么,其中空白值永远不会覆盖已存在的值?
print_r(array_coolmerge($aamain,$update));
/* …Run Code Online (Sandbox Code Playgroud) 我用一个包含自定义构造函数,析构函数,复制构造函数和赋值运算符的示例类编写了一个小测试程序.当我意识到复制构造函数根本没有被调用时,我感到很惊讶,即使我实现了具有类的返回值和类似行的函数Object o1; Object o2(o1);
innerclass.hpp:
#include <iostream>
class OuterClass
{
public:
OuterClass()
{
std::cout << "OuterClass Constructor" << std::endl;
}
~OuterClass()
{
std::cout << "OuterClass Destructor" << std::endl;
}
OuterClass(const OuterClass & rhs)
{
std::cout << "OuterClass Copy" << std::endl;
}
OuterClass & operator=(const OuterClass & rhs)
{
std::cout << "OuterClass Assignment" << std::endl;
}
class InnerClass
{
public:
InnerClass() : m_int(0)
{
std::cout << "InnerClass Constructor" << std::endl;
}
InnerClass(const InnerClass & rhs) : m_int(rhs.m_int)
{
std::cout << …Run Code Online (Sandbox Code Playgroud) 我尝试使用这样的变量绑定:
$stmt = $mysqli->prepare("UPDATE mytable SET myvar1=?, myvar2=... WHERE id = ?")) {
$stmt->bind_param("ss...", $_POST['myvar1'], $_POST['myvar2']...);
Run Code Online (Sandbox Code Playgroud)
但是一些$ _POST ['...']可能是空的,所以我不想在DB中更新它们.
这是不实际的,考虑到空$ _ POST各种不同的组合["..."],虽然我可以建立字符串'UPDATE mytable的设置...’我的需求,bind_param()是一个不同的野兽.
我可以尝试将其调用作为字符串构建并使用eval()但它感觉不对:(
在将给定的基于指针的有效哈希映射实现转换为通用哈希映射实现的过程中,我偶然发现了以下问题:
我有一个表示哈希节点的类(哈希映射实现使用二叉树)
THashNode <KEY_TYPE, VALUE_TYPE> = class
public
Key : KEY_TYPE;
Value : VALUE_TYPE;
Left : THashNode <KEY_TYPE, VALUE_TYPE>;
Right : THashNode <KEY_TYPE, VALUE_TYPE>;
end;
Run Code Online (Sandbox Code Playgroud)
除此之外,还有一个函数应返回指向哈希节点的指针.我想写
PHashNode = ^THashNode <KEY_TYPE, VALUE_TYPE>
Run Code Online (Sandbox Code Playgroud)
但那不会编译(';'预期,但'<'找到).
如何指向泛型类型的指针?
并向Barry Kelly致敬:如果您读到这个:是的,这是基于您的哈希映射实现.你自己没有写过这样一个通用版本的实现,对吗?那会节省我一些时间:)
我是C#的新手.到目前为止,我曾经创建过每个全局变量 - public static.我的所有方法都是public static,所以我可以从其他类中访问它们.
我在SO上看到,我拥有的公共静态方法越少越好.所以我通过将所有代码放在一个类中来重写我的应用程序 - 表单类.现在我的所有方法都是私有的,并且没有静态方法.
我的问题:我应该怎么做,在表格类中保留所有内容都是我认为的转储.
什么时候我应该使用public,私有和静态私有/公共?
我认为公共方法是一种"缺点",因为它们可以反编译,但我对此表示怀疑.我的公共方法也可以被反编译.私有方法中的"私有"是什么?
编辑:我不是问如何阻止我的程序被反编译,我问我是否应该使用静态,私有和公共.还有:将所有代码放在表单类中是否有问题所以我没有使用公共方法?