是否可以在迭代时向元素添加元素?
更具体地说,我想迭代一个集合,如果一个元素满足某个条件,我想在集合中添加一些其他元素,并确保迭代这些添加的元素.(我意识到这可能导致一个无终止的循环,但我很确定它不会在我的情况下.)
Sun 的Java教程表明这是不可能的:"请注意,这Iterator.remove是在迭代期间修改集合的唯一安全方法;如果在迭代进行过程中以任何其他方式修改基础集合,则行为未指定."
所以如果我不能用迭代器做我想做的事,你建议我做什么?
def create
req = ActiveSupport::JSON.decode(request.body)
if user = User.authenticate(req["email"], req["password"])
session[:user_id] = user.id
render :json => "{\"r\": \"t\"}" + req
else
render :json => "{\"r\": \"f\"}"
end
end
Run Code Online (Sandbox Code Playgroud)
'create'方法在控制器中并映射到"/ login",我正在设置正确的内容类型并从我的curl客户端接受标题.我一直收到422 http状态响应.
有什么建议?
是否可以在Erlang中实现闭包?
例如,我如何从Scheme翻译此片段?
(define (make-adder n)
(lamdba (x) (+ x n)))
Run Code Online (Sandbox Code Playgroud)
我试过以下,但我显然遗漏了一些东西.
make_adder(n) ->
fun (x) -> x + n end.
Run Code Online (Sandbox Code Playgroud)
编译它会产生错误
Warning: this expression will fail with a 'badarith' exception
Run Code Online (Sandbox Code Playgroud) 在ruby中,我经常发现自己编写以下内容:
class Foo
def initialize(bar, baz)
@bar = bar
@baz = baz
end
<< more stuff >>
end
Run Code Online (Sandbox Code Playgroud)
甚至
class Foo
attr_accessor :bar, :baz
def initialize(bar, baz)
@bar = bar
@baz = baz
end
<< more stuff >>
end
Run Code Online (Sandbox Code Playgroud)
我总是希望尽可能地减少样板 - 所以有没有更惯用的方式在ruby中创建对象?
我正在使用Ruby的CSV库来解析一些CSV.我有一个看似格式正确的CSV文件,我通过将Excel文件导出为CSV来创建.
然而CSV.open(filename, 'r')导致一个CSV::IllegalFormatError.
文件中没有流氓逗号或引号,也没有任何我可以看到可能导致问题的内容.
我怀疑这个问题可能与行结尾有关.我能够解析通过文本编辑器(Aquamacs)手动输入的数据.就在我尝试从Excel(OS X)导出的数据时,会出现问题.当我在vim中打开导出的CSV时,所有文本都显示在一行上,并^M显示在行之间.
从文档中,似乎可以提供open行分隔符; 但我不确定在这种情况下应该是什么.
我显然误解了Python Thread对象的守护进程属性的基本内容.
考虑以下:
daemonic.py
import sys, threading, time
class TestThread(threading.Thread):
def __init__(self, daemon):
threading.Thread.__init__(self)
self.daemon = daemon
def run(self):
x = 0
while 1:
if self.daemon:
print "Daemon :: %s" % x
else:
print "Non-Daemon :: %s" % x
x += 1
time.sleep(1)
if __name__ == "__main__":
print "__main__ start"
if sys.argv[1] == "daemonic":
thread = TestThread(True)
else:
thread = TestThread(False)
thread.start()
time.sleep(5)
print "__main__ stop"
Run Code Online (Sandbox Code Playgroud)
从python文档:
当没有剩下活着的非守护程序线程时,整个Python程序退出.
因此,如果我使用TestThread作为守护进程运行,我希望它在主线程完成后退出.但这不会发生:
> python daemonic.py daemonic
__main__ start
Daemon :: 0
Daemon :: …Run Code Online (Sandbox Code Playgroud) 我需要报告自1900年1月1日以来的秒数.我有自Unix时代开始以来的秒数.
有人能指出我对19/1年1月1日到1970年1月1日之间秒数的确切参考吗?
我有一对班级:
class Collection < ActiveRecord::Base
has_many :items, autosave: true
end
class Item < ActiveRecord::Base
belongs_to :collection
end
Run Code Online (Sandbox Code Playgroud)
来自文档:
当:autosave为true时,无论是否为新记录,都会保存所有子项:
但是当我更新Item并保存其父级时Collection,Item不会保存已升级的属性:
> c = Collection.first
=> #<Collection id: 1, name: "collection", created_at: "2012-07-23 00:00:10", updated_at: "2012-07-23 00:00:10">
> i = c.items.first
=> #<Item id: 1, collection_id: 1, name: "item1", created_at: "2012-07-23 00:00:25", updated_at: "2012-07-23 00:00:25">
> i.name = 'new name'
=> "new name"
> c.save
=> true
> Collection.first.items
=> [#<Item id: 1, …Run Code Online (Sandbox Code Playgroud) 我试图在同一个Ubuntu服务器上使用Apache来托管两个网站.我有一个IP地址,我只有一个域(解析为IP地址).所以我希望域名请求给一个网站,并请求ip地址给另一个.
我在/ etc/apache2/sites-enabled中有符号链接到两个文件,指向我的两个站点的配置.
一个包含:
<VirtualHost 1.2.3.4:80>
ServerName 1.2.3.4
stuff
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
而另一个包含
<VirtualHost domain.net:80>
ServerName domain.net
stuff
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,当我启动Apache时,我收到以下消息:
[warn] VirtualHost 1.2.3.4:80 overlaps with VirtualHost domain.net:80, the first has precedence, perhaps you need a NameVirtualHost directive
Run Code Online (Sandbox Code Playgroud)
当我将浏览器指向domain.net或1.2.3.4时,我得到了我想要与ip地址相关联的网站.
如果我删除符号链接,然后将浏览器指向域名或IP地址,则会启用唯一启用的网站.(正如你所希望的那样.)
据我了解,启用站点的配置文件一次加载,包含IP地址的配置文件胜过包含域名的配置文件.警告建议查看NameVirtualHost指令,但我可以在线找到的所有帮助都是指有两个域名指向同一个IP地址的情况.
一如既往,非常感谢帮助或建议.
(对于它的价值,这些网站都是Rails应用程序,我正在使用Passenger进行部署,但我认为这不重要.)
我有一个表格如下:
<% form_remote_tag :url => {:action => :wotsit} do %>
<%= submit_tag "Foo" %>
<%= submit_tag "Bah" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我希望提交的参数能反映出哪个按钮被点击了.但是,无论我点击哪个按钮,提交的参数都包括"commit"=>"Foo".
我究竟做错了什么?