我正在尝试编写如下所示的通用缓存属性访问器,但在尝试检查存储变量是否已包含值时遇到编译器错误:
function TMyClass.GetProp<T>(var ADataValue: T; const ARetriever: TFunc<T>): T;
begin
if ADataValue = Default(T) then // <-- compiler error on this line
ADataValue := ARetriever();
Result := ADataValue;
end;
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"E2015运算符不适用于此操作数类型".
我是否必须约束T才能使这项工作?帮助文件说Default()除了泛型类型之外会接受任何东西.在我的情况,我用简单的类型,如内容大都String,Integer和TDateTime.
或者是否有其他库函数来执行此特定检查?
我正在使用Delphi 2009以防万一.
PS:以防万一我从代码中不清楚我正在尝试做什么:在我的情况下,由于各种原因确定实际属性值可能需要一段时间,有时甚至根本不需要它们.在正面但是值是常量所以我只想调用第一次访问属性时确定实际值的代码,然后将值存储在类字段中,下次访问该属性时返回缓存值直.这是我希望能够使用该代码的示例:
type
TMyClass = class
private
FSomeProp: String;
function GetSomeProp: String;
function GetProp<T>(var ADataValue: T; const ARetriever: TFunc<T>): T;
public
property SomeProp read GetSomeProp;
end;
function GetSomeProp: String;
begin
Result := GetProp<String>(FSomeProp,
function: String
begin
Result …Run Code Online (Sandbox Code Playgroud) 我试图添加一些过滤到应用程序上下文文件,该文件驻留在WEB-INF目录中.
我在文件夹/ src/main/resources中有要过滤的文件(xmlgateway-context.xml).
我在文件夹src/main/filters中有属性文件(config-e05.properties)
我的POM设置如下:
<!-- environment profiles -->
<profiles>
<profile>
<id>e04</id>
<properties>
<targetenv>e04</targetenv>
</properties>
</profile>
<profile>
<id>e05</id>
<properties>
<targetenv>e05</targetenv>
</properties>
</profile>
</profiles>
<!-- build settings (filtering) -->
<build>
<filters>
<filter>src/main/filters/config-${targetenv}.properties</filter>
</filters>
<resources>
<resource>
<targetPath>WEB-INF</targetPath>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
Run Code Online (Sandbox Code Playgroud)
这将正确安装mvn,但是当我打开输出war文件时,我希望文件xmlgateway-context.xml位于/ WEB-INF目录中,但它最终位于/ WEB-INF/classes/WEB文件夹中-INF.
如何将此文件放到正确的位置.
或者,我可以将应用程序上下文放在不同的位置并在那里引用它.
我在CodeIgniter中的模型需要检查用户是否有权执行给定的操作.在我使用$ this-> session-> userdata ['user_id']引用的模型中.
我的问题是 - 我应该在Controller中将变量设置为$ this-> session-> userdata ['user_id']并将其传递给模型,或者只是在模型中检查它?
它甚至重要吗?我想将$ user_id传递给函数会使(略微)更具可读性.争论/反对的论点和建议是什么?
我在哪里可以找到有关如何编写Xcode插件的资源?我不想编写宏和项目模板,而是扩展IDE功能的插件,例如可以为Visual Studio开发的插件 - 能够在自己的窗口中显示并访问Xcode项目数据.
我试图使用mechanize在网站上解析并提交表单,但看起来内置表单解析器无法检测表单及其元素.我怀疑它在形成不良的HTML上很窒息,我想尝试使用一个解析器进行预解析,该解析器更好地设计用于处理错误的HTML(例如lxml或BeautifulSoup),然后将经过修饰的清理输出提供给表单解析器.我需要机械化不仅用于提交表单而且用于维护会话(我在登录会话中使用此表单.)
我不确定如何做到这一点,如果它确实可能..我不熟悉HTTP协议的各种细节,如何让各个部分一起工作等等.任何指针?
给出以下代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[1];
int * b = malloc(sizeof(int));
/* 1 */
scanf("%d", &a);
printf("%d\n", a[0]);
/* 2 */
scanf("%d", &b);
printf("%d\n", b[0]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译时获得以下警告(i686-apple-darwin9-gcc-4.0.1):
array.c: In function 'main':
array.c:9: warning: format '%d' expects type 'int *', but argument 2 has type 'int (*)[0u]'
array.c:14: warning: format '%d' expects type 'int *', but argument 2 has type 'int **'
Run Code Online (Sandbox Code Playgroud)
但是,为什么在第二个printf中发生执行错误,同时它适用于第一个printf?
更重要的是,如果用scanf代替第一个scanf("%d",a),为什么得到相同的输出; ?
非常感谢提前
在我的首页模板中,我使用缓存函数,如下所示:
{% cache 86400 my_posts %}
{% get_latest_posts %}
{% endcache %}
Run Code Online (Sandbox Code Playgroud)
当有新帖子时我想使缓存密钥失效; 像这样:
def clear_post_cache():
cache.delete('my_posts')
post_save.connect(clear_post_cache, sender=Post)
Run Code Online (Sandbox Code Playgroud)
我的问题是缓存键不能作为'my_posts'访问.如何找到密钥名称?
因为我不想使用Django的内置认证系统(也许我应该这样做,请告诉我是否是这种情况),我创建了一个简单的小auth类:
import random
import hashlib
from myapp import models
class CustomerAuth:
key = 'customer'
def __init__(self, session):
self.session = session
def attempt(self, email_address, password):
password_hash = hashlib.sha1(password).hexdigest()
try:
return models.Customer.objects.get(
email_address=email_address,
password_hash=password_hash)
except models.Customer.DoesNotExist:
return None
def login(self, customer):
self.session[self.key] = customer
def logout(self):
if self.session.has_key(self.key):
self.session[self.key] = None
def is_logged_in(self):
return self.session.has_key(self.key)
and self.session[self.key] != None
def get_active(self):
if self.is_logged_in():
return self.session[self.key]
else:
raise Exception('No user is logged in.')
def redirect_to_login(self):
return HttpResponseRedirect('/login/')
def redirect_from_login(self):
return HttpResponseRedirect('/account/')
Run Code Online (Sandbox Code Playgroud)
问题是,当我想用它来阻止未经授权的访问时,我必须在每个单一的视图方法中使用这个代码片段:
def …Run Code Online (Sandbox Code Playgroud) 我在获取RichEdit控件以显示unicode RTF文本时遇到问题.我的应用程序是Unicode,因此所有字符串都是wchar_t字符串.
如果我将控件创建为"RichEdit20A",我可以使用例如SetWindowText,并以正确的格式显示文本.如果我将控件创建为"RichEdit20W",则使用SetWindowText逐字显示文本,即显示所有RTF代码.如果我使用EM_SETTEXTEX参数,指定MSDN告诉我的代码页1200用于指示unicode,则会发生同样的情况.
我已经尝试过使用StreamIn函数,但是如果我在ASCII文本中流式传输,这似乎只能起作用.如果我在widechars中流,那么我在控件中得到空文本.我使用SF_RTF | SF_UNICODE标志,MSDN暗示可能不允许这种组合.
那么该怎么办?有没有办法让宽带进入RichEdit而不会丢失RTF解释,或者我需要对其进行编码吗?我曾考虑尝试使用UTF-8,或者使用RTF中的编码工具,但我不确定最佳选择是什么.
在寻找源代码,字节码,汇编代码,机器代码,编译器,链接器,解释器,汇编器和其他所有内容的各种差异时,我只对编码和汇编代码之间的区别感到困惑.
特别是介绍这篇维基百科文章来描述CIL让我很困惑,因为它似乎可以互换地使用这两个术语(汇编代码和字节码),这让我觉得它们可能意味着完全一样.