我对这段代码感到非常困惑:
var closures = [];
function create() {
for (var i = 0; i < 5; i++) {
closures[i] = function() {
alert("i = " + i);
};
}
}
function run() {
for (var i = 0; i < 5; i++) {
closures[i]();
}
}
create();
run();
Run Code Online (Sandbox Code Playgroud)
根据我的理解,它应该打印0,1,2,3,4(这不是闭包的概念吗?).
而是打印5,5,5,5,5.
我试过Rhino和Firefox.
有人可以向我解释这种行为吗?Thx提前.
我有一个序列s
和这个序列的索引列表indexes
.如何仅保留通过索引提供的项目?
简单的例子:
(filter-by-index '(a b c d e f g) '(0 2 3 4)) ; => (a c d e)
Run Code Online (Sandbox Code Playgroud)
我的用例:
(filter-by-index '(c c# d d# e f f# g g# a a# b) '(0 2 4 5 7 9 11)) ; => (c d e f g a b)
Run Code Online (Sandbox Code Playgroud) 我有一个包含几个字段的域类.我可以从我的.gsps访问它们.我想在域类中添加一个方法,我可以从.gsps中调用它(这个方法是一种虚拟字段;它的数据不是直接来自数据库).
如何添加方法以及如何从.gsps中调用它?
我有两个django模型类:
class A(models.Model):
name = models.CharField(max_length = 128) #irrelevant
class B(models.Model):
a = models.ManyToManyField(A)
name = models.CharField(max_length = 128) #irrelevant
Run Code Online (Sandbox Code Playgroud)
我想做的是以下内容:
a1 = A()
a2 = A()
b = B()
b.a.add(a1)
b.a.add(a1) #I want to have a1 twice
b.a.add(a2)
assert len(b.a.all()) == 3 #this fails; the length of all() is 2
Run Code Online (Sandbox Code Playgroud)
我猜add()使用set语义,但我怎么能绕过呢?我试着调查自定义管理器,但我不确定这是否正确(似乎很复杂)......
提前致谢!
我在django中有几个连接多对多的模型.我想在内存中创建这些模型的实例,将它们呈现给用户(通过view-templates中的自定义方法调用),如果用户满意,则将它们保存到数据库中.
但是,如果我尝试对模型实例(例如,调用呈现方法)执行任何操作,则会收到一条错误消息,指出我必须先保存实例.文档说这是因为模型处于多对多的关系中.
如何向用户显示对象并允许他/她保存或丢弃它们而不会使我的数据库混乱?
(我想我可以关闭交易处理并在整个项目中自己完成,但这听起来像是一个容易出错的措施...)
谢谢!
我想要一个可以像这样使用的宏dbtest:
(dbtest
(prn test-object1)
(prn test-object2))
Run Code Online (Sandbox Code Playgroud)
test-object1和test-object2应该是dbtest定义的变量(因为我每次使用dbtest宏都需要它们)."prn"只是一个例子; 我想在宏中使用任意代码.
我试过这个:
(defmacro dbtest [& body]
`(sql/with-connection db
(delete-all-tables)
(let [~'test-object1 (insert-object "foo")]
~@body)))
Run Code Online (Sandbox Code Playgroud)
其中insert-object是一个向DB中插入内容并返回相应数据结构的函数.
但它不起作用:我得到一个"没有这样的var"错误
clojure ×2
django ×2
python ×2
closures ×1
grails ×1
groovy ×1
javascript ×1
loops ×1
macros ×1
many-to-many ×1