DynamicInvoke和DynamicInvokeImpl的文档都说:
动态调用(后期绑定)当前委托表示的方法.
我注意到DynamicInvoke和DynamicInvokeImpl采用了一个对象数组而不是一个特定的参数列表(这是我猜的后期绑定部分).但这是唯一的区别吗?DynamicInvoke和DynamicInvokeImpl之间有什么区别.
我有以下课程:
case class Vec2(x: Int, y: Int) { def +(other: Vec2) = Vec2(x + other.x, y + other.y) }
case class Vec3(x: Int, y: Int, z: Int) { def +(other: Vec3) = Vec3(x + other.x, y + other.y, z + other.z) }
Run Code Online (Sandbox Code Playgroud)
以下方法:
def doStuff1(a: Vec2, b: Vec2) = (a, a + b)
def doStuff2(b: Vec3, b: Vec3) = (a, a + b)
Run Code Online (Sandbox Code Playgroud)
我的问题:如何以类型安全的方式将这两个函数合并为一个通用函数?可以以任何方式改变课程.
就像是
def doStuff[V](a: V, b: V) = (a, a + b)
Run Code Online (Sandbox Code Playgroud)
显然不会起作用,因为调用了"+"方法.我尝试了各种疯狂的东西(带有抽象类型的公共基类,显式类型的自引用,差异,......)但是无法提出解决方案.
我能想出的最好的想法是运行时检查(模式匹配或isInstanceOf/asInstanceOf),但这不符合类型安全要求.我只是想/希望必须有更好的方法来做到这一点.
我知道MoveWindow()和SetWindowPos()函数.我知道如何正确使用它们.但是,我想要完成的是缓慢平滑地移动窗口,就好像用户正在拖动窗口一样.
我还没有让它正常工作.我尝试的是使用GetWindowRect()获取当前坐标,然后使用setwindow和movewindow函数,每次调用右递增10个像素.
有任何想法吗?
这是我所有定义旁边的内容.
while(1)
{
GetWindowRect(notepad,&window);
Sleep(1000);
SetWindowPos(
notepad,
HWND_TOPMOST,
window.top - 10,
window.right,
400,
400,
TRUE
);
}
Run Code Online (Sandbox Code Playgroud) 作为Haskell的一个练习,我正在尝试实现heapsort.堆通常在命令式语言中实现为数组,但在纯函数式语言中这将是非常低效的.所以我看了二进制堆,但到目前为止我发现的所有内容都是从命令性的角度描述的,所提出的算法很难转化为功能设置.如何在Haskell等纯函数式语言中有效地实现堆?
编辑:通过有效我的意思是它应该仍然在O(n*log n),但它不必击败C程序.另外,我想使用纯函数式编程.在Haskell中做这件事还有什么意义呢?
haskell functional-programming binary-heap heapsort purely-functional
我希望保护存储在一个表中的事件,该表与其他表有关系.事件通过Windows服务插入,即连接硬件和从硬件读取.
在事件表中有PK,日期和时间以及3个不同的值.
问题是每个管理员都可以登录并插入/更新/删除此表中的数据,例如使用sql management studio.我创建触发器以防止更新和删除,因此如果管理员不知道触发器,他就无法更改数据,但如果他知道触发器,他可以轻松地禁用触发器并执行他想要的任何操作.
所以经过长时间的思考我有一个想法,在表中添加新的列(字段)并在此字段中存储类似校验和的内容,将根据其他值计算此校验和.此校验和将在插入/更新语句中生成.如果有人手动插入/更新某些东西,我会知道它,因为如果我用校验和检查数据,就会出现不匹配.
我的问题是,如果你有类似的问题,你如何解决它?校验和使用什么算法?如何保护免受删除声明(我知道PK中的空数,但这还不够)?
我正在使用SQL Server 2005.
我如何知道我的应用程序当前托管的完整虚拟路径?例如:
http://www.mysite.com/myApp
Run Code Online (Sandbox Code Playgroud)
要么
http://www.mysite.com/myApp/mySubApp
Run Code Online (Sandbox Code Playgroud)
我知道HttpRequest的应用程序路径,但它只返回我的应用程序当前托管的文件夹名称,但是如何获取初始部分?
虽然这个问题类似于这个主题
我想在使用正则表达式构造代码时可能会出错.
我希望将一行中的任何内容与注释("#")或行尾(如果它没有注释)匹配.
我正在使用的正则表达式是: (.*)(#|$)
(.*)= Everything
(#|$)=评论或行尾
代码:
OPTION = re.compile(r'(?P<value>.*)(#|$)')
file = open('file.txt')
lines = file.read()
for line in lines.split('\n'):
get_match = OPTION.match(line)
if get_match:
line_value = get_match.group('value')
print "Match= %s" % line_value
Run Code Online (Sandbox Code Playgroud)
以上工作但不删除评论.如果文件有一行如下:
this is a line # and this is a comment
Run Code Online (Sandbox Code Playgroud)
运行代码时我仍然得到整行.
我是否在正则表达式中缺少其他值/信息,或者我是否需要对代码进行更改?
在我的.net 3.5 web应用程序中,我使用response.redirect将用户重定向到另一个页面.
这适用于所有浏览器,但不适用于Firefox浏览器.我不知道为什么?
Response.Redirect("~/"+ GlobalConsts.ARTICLE_ANALYSER_URL +"?"+ GlobalConsts.QUERYSTRING_KEY_ONE +
SessionHandler.RedirectToArticleID + GlobalConsts.QUERYSTRING_KEY_TWO +
SessionHandler.RedirectToArticleParentOrChild);
Run Code Online (Sandbox Code Playgroud) 我使用正则表达式的经验很少,我需要使用正则表达式解析表示为方位的角度值,例如:
"N45°20'15.3" E"
代表:45度,20分钟,15.3秒,位于NE象限.
限制是:
Python最好或任何其他语言.
谢谢