我是golang的新手,所以请原谅这是一个非常基本的问题.下面的代码给出了编译错误,说'意外去':
x := go doSomething(arg)
func doSomething(arg int) int{
...
return my_int_value
}
Run Code Online (Sandbox Code Playgroud)
我知道,如果不正常调用函数,我可以获取返回值,而不使用goroutine.或者我可以使用频道等
我的问题是为什么不能从goroutine获取这样的返回值.
我是Go语言的新手,所以如果我的问题非常基本,请原谅.我写了一个非常简单的代码:
func main(){
var count int // Default 0
cptr := &count
go incr(cptr)
time.Sleep(100)
fmt.Println(*cptr)
}
// Increments the value of count through pointer var
func incr(cptr *int) {
for i := 0; i < 1000; i++ {
go func() {
fmt.Println(*cptr)
*cptr = *cptr + 1
}()
}
}
Run Code Online (Sandbox Code Playgroud)
count的值应该增加一个循环运行的次数.考虑案例:
循环运行100次 - >计数值为100(循环运行100次时这是正确的).
循环运行> 510次 - >计数值为508或510.即使它是100000也会发生.
我在8核处理器机器上运行它.
我有一个rails应用程序,包括几个一次组合安装的引擎.应用程序的B2B端有一个引擎,我们有一个单独的"用户"模型(像公司一样)进行设计验证.同样,最终客户也有一个拥有自己的身份验证模型(例如:公司的用户).同样,还有另一个站点管理员引擎,它使用ActiveAdmin实现根级别管理.
我们可以在几种组合中同时安装一个,两个或三个引擎.问题是,我们每个都有不同的父应用程序控制器,每个都有不同的路由器.就像是:
devise.rb
- engine1
config.router_name = :engine1
config.parent_controller = 'Engine1::ApplicationController'
Run Code Online (Sandbox Code Playgroud)
devise.rb
- engine2
config.router_name = :engine2
config.parent_controller = 'Engine2::ApplicationController'
Run Code Online (Sandbox Code Playgroud)
但是,当然,我不能有多个冲突的配置文件.
我需要帮助我如何在设计上实现这样的东西.
在我看来,我正在渲染一部分.这实际上是一个行元素,在表中显示大约500 - 600次.我渴望加载所有协会.但是,问题是,相同的部分需要一些突然不同的渲染时间.
我的rails服务器o/p:
Rendered admin/invoices/_update.html.erb (1330.3ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (8.8ms)
Rendered admin/invoices/_update.html.erb (4.4ms)
Rendered admin/invoices/_update.html.erb (1309.9ms)
Rendered admin/invoices/_update.html.erb (4.7ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (1322.6ms)
Rendered admin/invoices/_update.html.erb (4.2ms)
Run Code Online (Sandbox Code Playgroud)
此外,没有特定的行每次都需要更长的时间.
在我的视图文件中:
<% @updates.each do |update| %>
<%= render :partial => 'update', :locals => {:user => update[0]} #each of this is a row %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
更新:还建议这是一个很好的方法吗?即:多次循环部分.我不能用分页和Ajax来固定东西.任何其他方法.?
renderpartial partial-views ruby-on-rails-3 ruby-on-rails-3.1
比方说,我在模块的命名空间下有一个类
Module::Klass
Run Code Online (Sandbox Code Playgroud)
我可以Klass
从控制台访问它,它给了我:
Module::Klass
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用:
"klass".constantize # Calling constantize on String
Run Code Online (Sandbox Code Playgroud)
它出错,因为它没有附加模块命名空间.
所以,我的问题是:有没有办法根据当前上下文来限制字符串,以便我收到klass名称及其模块?
我希望在每次请求之前在rails app中运行一段代码.此外,它应该在达到之前运行application_controller.rb
.
我知道我们可以把这些东西放进去config/initializers
或者application.rb
.但是,我想在每个请求之前运行它.