给出以下代码:
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
Run Code Online (Sandbox Code Playgroud)
我们可以留下a已被添加到b原型链中.大.并且,以下所有都是真的:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我们不知道b1提前的起源怎么办?我们怎样才能发现其原型链的成员?理想情况下,我喜欢像[b, a, Object]或的数组["b", "a", "Object"].
这可能吗?我相信我已经在SO上找到了一个答案,描述了如何找到这个,但我不能再为我的生活找到它.
具体来说,我将文件上传保存到Lift Web应用程序中的本地文件.
这是我想做的事情:
function a() {
// ...
}
function b() {
// Some magic, return a new object.
}
var c = b();
c instanceof b // -> true
c instanceof a // -> true
b instanceof a // -> true
Run Code Online (Sandbox Code Playgroud)
可能吗?我可以通过挂钩到它的原型链b来成为一个a容易的实例a但是我必须这样做new b(),这就是我想要避免的.我想要的是什么?
更新:我觉得有可能明智地使用b.__proto__ = a.prototype.我下班后要去做更多的实验.
更新2:下面是你可以得到的最接近的,这对我来说已经足够了.谢谢所有有趣的答案.
function a() {
// ...
}
function b() {
if (!(this instanceof arguments.callee)) {
return new arguments.callee();
}
}
b.__proto__ = a.prototype …Run Code Online (Sandbox Code Playgroud) 我正在尝试读取一个zip文件,检查它是否有一些必需的文件,然后将所有有效文件写入另一个zip文件.java.util.zip的基本介绍有很多Java主义,我很想让我的代码更加Scala-native.具体来说,我想避免使用vars.这就是我所拥有的:
val fos = new FileOutputStream("new.zip");
val zipOut = new ZipOutputStream(new BufferedOutputStream(fos));
while (zipIn.available == 1) {
val entry = zipIn.getNextEntry
if (entryIsValid(entry)) {
zipOut.putNewEntry(new ZipEntry("subdir/" + entry.getName())
// read data into the data Array
var data = Array[Byte](1024)
var count = zipIn.read(data, 0, 1024)
while (count != -1) {
zipOut.write(data, 0, count)
count = zipIn.read(data, 0, 1024)
}
}
zipIn.close
}
zipOut.close
Run Code Online (Sandbox Code Playgroud)
我应该补充说我正在使用Scala 2.7.7.
我有一组连续的行,我想根据它们的主键获得,这是一个自动递增的整数.假设没有洞,两者之间是否有任何表现:
SELECT * FROM `theTable` WHERE `id` IN (n, ... nk);
Run Code Online (Sandbox Code Playgroud)
和:
SELECT * FROM `theTable` WHERE `id` BETWEEN n AND nk;
Run Code Online (Sandbox Code Playgroud) 这似乎是一个愚蠢的问题,所以请耐心等待......
考虑一下这个REPL会话:
scala> trait T
defined trait T
scala> val t = new T
<console>:8: error: trait T is abstract; cannot be instantiated
val t = new T
^
scala> val t = new T {}
t: java.lang.Object with T = $anon$1@78db81f3
scala> class C
defined class C
scala> val c = new C
c: C = C@170a6001
Run Code Online (Sandbox Code Playgroud)
我们可以像一个类一样使用特征,除了我们必须在{}之后添加new T.事实上,我们基本上是混合T进入java.lang.Object,这实际上使得很多的意义,我.
如果我们有成员,则只需{}添加:
scala> trait T2 { val s = "test" } …Run Code Online (Sandbox Code Playgroud) 是否有任何库可以为Javascript提供任何其他通用数学函数?比如像范围,衍生物,积分等的总和.我可以想象许多事情是不可能的,所以即使做粗略近似的图书馆也会很有趣.
谢谢!
更新:如下所述,我想没有任何库可以做我想做的事情.本着这种精神,我开始使用我自己的名为MathPlus的库.
我非常频繁地(> = 1 /秒)对API端点进行HTTP POST,我想确保我有效地进行.我的目标是尽快成功或失败,特别是因为我有单独的代码来重试失败的POST.有一个很好的HttpClient性能提示页面,但我不确定是否详尽地实现它们都会带来真正的好处.这是我现在的代码:
public class Poster {
private String url;
// re-use our request
private HttpClient client;
// re-use our method
private PostMethod method;
public Poster(String url) {
this.url = url;
// Set up the request for reuse.
HttpClientParams clientParams = new HttpClientParams();
clientParams.setSoTimeout(1000); // 1 second timeout.
this.client = new HttpClient(clientParams);
// don't check for stale connections, since we want to be as fast as possible?
// this.client.getParams().setParameter("http.connection.stalecheck", false);
this.method = new PostMethod(this.url);
// custom …Run Code Online (Sandbox Code Playgroud) 鉴于以下列表:
val l = List(List(1, 2, 3), List(4, 5), List(6, 7, 8))
Run Code Online (Sandbox Code Playgroud)
如果我尝试转置它,Scala将抛出以下错误:
scala> List.transpose(l)
java.util.NoSuchElementException: head of empty list
at scala.Nil$.head(List.scala:1365)
at scala.Nil$.head(List.scala:1362)
at scala.List$$anonfun$transpose$1.apply(List.scala:417)
at scala.List$$anonfun$transpose$1.apply(List.scala:417)
at scala.List.map(List.scala:812)
at scala.List$.transpose(List.scala:417)
at .<init>(<console>:6)
at .<clinit>(<console>)
at RequestResult...
Run Code Online (Sandbox Code Playgroud)
这是因为List.transpose假设等长列表,所以使用head方法:
def transpose[A](xss: List[List[A]]): List[List[A]] = {
val buf = new ListBuffer[List[A]]
var yss = xss
while (!yss.head.isEmpty) {
buf += (yss map (_.head))
yss = (yss map (_.tail))
}
buf.toList
}
Run Code Online (Sandbox Code Playgroud)
我想得到以下内容:
List(List(1, 4, 6), List(2, 5, …Run Code Online (Sandbox Code Playgroud) scala ×4
javascript ×3
java ×2
prototype ×2
between ×1
c ×1
class ×1
constructor ×1
embedded ×1
file ×1
http ×1
immutability ×1
inheritance ×1
inputstream ×1
lift ×1
list ×1
lwip ×1
math ×1
mysql ×1
networking ×1
sql ×1
traits ×1
transpose ×1
zeroconf ×1