Facade,Proxy,Adapter和Decorator设计模式有什么区别?
我从来没有读过明确的解释,你的是什么?
当我调用val()输入时,type="file"我只获取文件名而不是完整路径.我怎样才能获得完整的路径?
无法弄清楚如何准确地说出问题,所以这是一个例子:
鉴于此功能原型:
void Foo(myClass* bar);
Run Code Online (Sandbox Code Playgroud)
我想阻止这种用法:
Foo(new myClass());
Run Code Online (Sandbox Code Playgroud)
而是需要先前创建的对象:
myClass* bar = NULL;
bar = new myClass();
Foo(bar);
Run Code Online (Sandbox Code Playgroud)
要么
myClass bar;
Foo(&bar);
Run Code Online (Sandbox Code Playgroud)
谢谢.
这是一个澄清的例子:
void Mouse::SetImage(BITMAP* image, int focusX, int focusY) {
if(_image) {
set_mouse_sprite(NULL);
set_mouse_sprite_focus(0, 0);
show_mouse(NULL);
destroy_bitmap(_image);
_image = NULL;
}
if(image) {
_image = create_bitmap(image->w, image->h);
clear_bitmap(_image);
blit(image, _image, 0, 0, 0, 0, image->w, image->h);
}
if(image == NULL) {
focusX = 0;
focusY = 0;
}
_focusX = focusX;
_focusY = …Run Code Online (Sandbox Code Playgroud) 假设我在C中有一个指向char的指针数组:
char *data[5] = { "boda", "cydo", "washington", "dc", "obama" };
Run Code Online (Sandbox Code Playgroud)
我希望使用qsort对这个数组进行排序:
qsort(data, 5, sizeof(char *), compare_function);
Run Code Online (Sandbox Code Playgroud)
我无法提出比较功能.由于某种原因,这不起作用:
int compare_function(const void *name1, const void *name2)
{
const char *name1_ = (const char *)name1;
const char *name2_ = (const char *)name2;
return strcmp(name1_, name2_);
}
Run Code Online (Sandbox Code Playgroud)
我做了很多搜索,发现我必须**在qsort里面使用:
int compare_function(const void *name1, const void *name2)
{
const char *name1_ = *(const char **)name1;
const char *name2_ = *(const char **)name2;
return strcmp(name1_, name2_);
}
Run Code Online (Sandbox Code Playgroud)
这很有效.
任何人都可以解释*(const char **)name1这个功能的使用吗?我根本不明白.为什么双指针?为什么我原来的功能不起作用?
谢谢,Boda …
我正在通过我的代码来替换我正在使用ereg()函数的任何实例 - 我用它来匹配字符串中的正则表达式.
如果某人有比我正在使用的更好的方法,我可以使用一点方向.
function valid_currency($number){
if(ereg('^[0-9]+\.[0-9]{2}$', $number))
return true;
else
return false;
}
if(valid_currency(25.30)){
echo "valid currency";
}else{
echo "invalid currency string";
}
Run Code Online (Sandbox Code Playgroud)
我用preg_match()替换了ereg().
我现在收到此错误:
警告:preg_match()[function.preg-match]:没有结束分隔符'^'
我猜测正则表达式语法未被识别.从这里我有点卡住了.
我有一个字符串,存储一些必须执行以产生结果的变量,例如:
define('RUN_THIS', '\$something.",".$somethingElse');
Run Code Online (Sandbox Code Playgroud)
然后是eval()-uated:
$foo = eval("return ".RUN_THIS.";");
Run Code Online (Sandbox Code Playgroud)
我理解,如果获得评估的字符串来自用户输入,则eval是不安全的.但是,如果我想让所有东西都运行Facebook的HipHop,它不支持eval(),我就不能这样做了.
显然我可以使用call_user_func()- 这实际上是有效的结果eval()吗?eval()如果确实如此,那么如何不被认为是安全的?
编辑:
在回应评论时,我最初没有说明目标是什么.该常量是事先定义的,以便后面的代码,无论是在有权访问配置常量的类中,还是程序代码,都可以使用它来评估给定的变量字符串.需要评估的变量可以根据情况而变化(完全不同的名称,顺序,格式),但它以相同的方式运行相同的目的,这就是为什么我当前在此常量中设置变量字符串的原因办法.从技术上讲,eval()只要定义常量的config.php受到控制但这不是问题的重点,并不是不安全的.
我有一项活动.在此活动中,我想使用startActivityForResult()启动另一个活动.据我所知,我的基本活动是在一个主GUI线程的进程中启动的.但据我所知,startActivityForResult()是异步的,这意味着我的新活动将在不同的线程中执行.我无法找到有关内部线程的信息.如果只有一个GUI线程,这些函数如何异步工作?
如果我在使用Spring 2.5 for DI的应用程序中创建EJB3 bean(比如无状态会话bean),我应该如何将Spring中的依赖项注入bean而不将bean耦合到Spring?
如何克隆具有特定修订版的git存储库,就像我在Mercurial中通常所做的那样:
hg clone -r 3 /path/to/repository
Run Code Online (Sandbox Code Playgroud) 我编写了一个扩展Iterator [A]的自定义特性,我希望能够使用我在另一个方法返回的迭代器[A]上编写的方法.这可能吗?
trait Increment[+A] extends Iterator[A]{
def foo() = "something"
}
class Bar( source:BufferedSource){
//this ain't working
def getContents():Increment[+A] = source getLines
}
Run Code Online (Sandbox Code Playgroud)
我仍然试图绕过整个隐含的东西而不是在Bar对象定义中编写方法.我将如何以上述方式包装这样的物品?