我所经历的问题,每一个良好的.NET开发人员应该能够回答,是这个问题的内容和方法非常深刻的印象,因此在同样的精神,我要求的PHP开发这个问题.
您认为优秀的PHP程序员能够回答哪些问题?
编辑:我将此问题标记为社区维基,因为它不是用户特定的,它旨在为整个编程社区服务.
期待一些惊人的回应.
注意:请按照评论中的建议回答问题,以便人们可以学习有关该语言的新内容.
嗨,我在选择具有明确特化的模板化类的正确版本时遇到问题.我想要使用用于专门化的类的派生类来选择特化.场景是:
#include <stdio.h>
class A
{};
class B: public A
{};
template<typename T>
class Foo
{
public:
int FooBar(void) { return 10; }
};
// Explicit specialization for A
template<> int Foo< A >::FooBar( void ) { return 20; }
void main( void)
{
Foo<B> fooB;
// This prints out 10 instead of wanted 20 ie compiler selects the general version
printf("%d", fooB.FooBar() );
}
Run Code Online (Sandbox Code Playgroud)
正如我在评论中所说的那样,我希望看到20被打印出来,因为B是从A派生出来的,而10则是打印出来的.如何在不诉诸为每个派生类编写专门化的情况下调用专门化(我的实际场景有很多派生类型).
我知道这是一个非常基本的问题.但我真的无法理解BLL中应该有什么.
让我举个例子.
让我们考虑一个Login.aspx网页,用于方便用户登录.
在这种情况下,Login.aspx将有两个文本框和一个登录按钮.(表示层).
数据访问层将具有检查用户名和密码是否正确的功能.
我不认为我在这个页面需要别的东西.那么我将在BLL中拥有什么?如果你想添加BLL中应该包含的一些功能,请添加.
可以在VideoView上放置任何视图吗?(即将控制按钮放在视频上,就像在vimeo中一样).我正在尝试使用FrameLayout,但我没有找到方法,我仍然不确定我是否正在尝试做一些根本不可能的事情.
如何修改下面的正则表达式以匹配日期部分的日期?这个正则表达式匹配"2003年1月1日| 2004年2月29日| 3202年11月02日"但我也需要它匹配:"2003年1月1日| 2004年2月29日| 11月02日,3202 | 2010年3月3日"
^(?:(((Jan(uary)?|Ma(r(ch)?|y)|Jul(y)?|Aug(ust)?|Oct(ober)?|Dec(ember)?)\ 31)|((Jan(uary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sept|Nov|Dec)(ember)?)\ (0?[1-9]|([12]\d)|30))|(Feb(ruary)?\ (0?[1-9]|1\d|2[0-8]|(29(?=,\ ((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))))\,\ ((1[6-9]|[2-9]\d)\d{2}))
Run Code Online (Sandbox Code Playgroud)
谢谢.
任何人都可以推荐没有shell集成的Windows SVN存储库浏览器吗?
我需要它是便携式的(随身携带闪存驱动器),因此无需安装过程.这排除了TortoiseSVN.
我的存储库是本地的,所以我需要一个可以访问文件存储库的工具.
我的C#应用程序需要将问题报告从用户的计算机发送给支持技术人员.没有可用的常见SMTP服务器,所以我认为我不能使用System.Net.Mail; 相反,必须使用用户自己的电子邮件程序和帐户发送消息.我可以使用办公自动化来启动Outlook并撰写邮件.但是如果用户没有使用Outlook呢?是否有更多通用机制由多个电子邮件客户端支持?或者是否有一个知道如何检测和调用各种客户端的库?
编辑:作为提交问题报告,我需要包含附件或(最坏的情况下)长消息体...
我刚刚开始围绕C中的函数指针.要了解函数指针的转换是如何工作的,我编写了以下程序.它基本上创建了一个函数指针,该函数指向一个带有一个参数的函数,将它转换为带有三个参数的函数指针,并调用该函数,提供三个参数.我很好奇会发生什么:
#include <stdio.h>
int square(int val){
return val*val;
}
void printit(void* ptr){
int (*fptr)(int,int,int) = (int (*)(int,int,int)) (ptr);
printf("Call function with parameters 2,4,8.\n");
printf("Result: %d\n", fptr(2,4,8));
}
int main(void)
{
printit(square);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这编译并运行时没有错误或警告(在Linux/x86上为gcc -Wall).我系统的输出是:
Call function with parameters 2,4,8.
Result: 4
Run Code Online (Sandbox Code Playgroud)
显然,多余的论点只是默默地被抛弃了.
现在我想了解这里发生了什么.
我来自Java,那里的类型检查要严格得多,所以这种行为让我有点困惑.也许我正在经历文化冲击:-).