我想开发一个类似于薪水计算的系统.薪水有基本价值.最重要的是,员工可以获得一些奖金或惩罚.装饰模式似乎适合这种情况
Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
Run Code Online (Sandbox Code Playgroud)
另外,我想保存每个计算的结果.所以最后,即使经过计算,我也可以检索LateComingPenalty的数量.
这似乎是一个常见的问题,涉及这种发票计算.可能有一些比装饰模式更好的选择.你有更好的建议吗?
是否有针对Perl的Gecko或WebKit等布局引擎的绑定?我在CPAN上找到了Gtk2-Webkit,但我想知道是否还有其他选择.
我的想法是使用其中一个引擎从Perl脚本创建网页缩略图.
使用正则表达式(在c#.net中)是否可以检查字符串的上一行?
举例来说,我需要选择字符串中前行不是一系列星号(前行:******)
scala类型Nothing表示(据我所知)类型层次结构的底部,也用符号denoted表示.也就是说,Nothing是任何给定类型的子类型.James Iry对我们这些没有理论背景理论背景的人解释了对Nothing类型的要求!
所以我的问题是,如果Nothing是每种类型的子类型,为什么我不能调用任何类型的方法Nothing?显然,我无法实例化Nothing但为什么不进行以下编译?
var n: Nothing = _
def main(args: Array[String]) {
println(n.length) //compile error: value length is not a member of Nothing
}
Run Code Online (Sandbox Code Playgroud)
当然,Nothing这个子类型String应该可以吗?请注意,以下编译就好了!
var n: Nothing = _
def foo(s: String) : Int = s.length
def main(args: Array[String]) {
println(foo(n))
}
Run Code Online (Sandbox Code Playgroud)
同样如下:
def main(args: Array[String]) {
println(n.asInstanceOf[String].length)
}
Run Code Online (Sandbox Code Playgroud) 在XML文档中使用CDATA元素是否易受攻击?如果是这样,如果我们在XML文档中使用CDATA元素会发生什么?
完整错误如下:
类型'System.Windows.Forms.Control'在未引用的程序集中定义.您必须添加对程序集'System.Windows.Forms,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用.
它指向库项目中第一个类中的第一个语句(Debug.Assert行),它不需要System.Windows.Forms(或者我认为).我知道如何解决它:添加提到的参考.但是,我如何找出导致此错误的库,或者更好的是,使用WinForms库触发了哪些代码?
通常,您可以添加引用其他库的库,但只需在实际使用时添加对其他库的引用.
使用Microsoft框架工具中的绑定日志查看器Fuslogvw.exe也可以解决此问题或类似问题.它显示了应用程序绑定的程序集的所有尝试和成功.
这让我感兴趣的纯粹是研究和个人发展.我有一组命名空间的函数/变量.
在1个函数中我需要通过setTimeout调用另一个函数但是将范围保持为'this'.我正在努力解决这个问题,似乎无法在setTimeout运行时绑定它.
var foo = {
ads: ["foo","bar"],
timeDelay: 3,
loadAds: function() {
var al = this.ads.length;
if (!al)
return; // no ads
for(var i = 0; i < al; i++) {
setTimeout(function() {
this.scrollAd(this.ads[i]);
}.apply(this), this.timeDelay * 1000);
}
},
scrollAd: function(adBlock) {
console.log(adBlock);
}
};
};
Run Code Online (Sandbox Code Playgroud)
.apply(this)DOES更改范围,因为console.log输出正确的对象,但它会立即运行该函数,然后在回调保持为空时出现异常/警告:
useless setTimeout call (missing quotes around argument?)
Run Code Online (Sandbox Code Playgroud)
这样做有一种优雅的方式吗?我知道我能做到
var _this = this;
Run Code Online (Sandbox Code Playgroud)
并_this在anon回调中引用.例如,在mootools我会用.bind(this)...
不,因为这涉及动画,我不想" "在字符串周围使用,因为它需要进行评估并会影响性能......
我有几个并发运行的进程,我想要登录到同一个文件.
我们一直在使用Enterprise Library 4.1 Logging Application Block(带有a RollingFlatFileTraceListener),它工作正常,除了它在两个进程同时尝试写入日志文件时为日志文件名添加GUID这一事实(a System.Diagnostics.TextWriterTraceListener我相信的怪癖).
我尝试了各种各样的事情,包括Logger.Writer.Dispose()写入日志文件后调用,但每次写入日志条目时都不适合进行阻塞调用.
EntLib论坛建议将MSMQ与分销商服务一起使用,但这不是一个选项,因为我的公司不允许使用MSMQ.
有没有其他方法可以快速轻松地从多个线程/进程登录到同一个文件?