假设我重写了preStart钩子并发送消息给self:
Class SomeActor extends Actor {
override def preStart(): Unit = {
self ! SomeMessage
}
...
}
Run Code Online (Sandbox Code Playgroud)
我能指望这SomeMessage将成为队列中的第一条消息吗?
我是新手,并试图构建一个Ember驱动的Web应用程序.我已经阅读了各种各样的内容并研究了几个例子.基本概念很清楚,但现在我仍然试图实现一个tabpanel.我的方法如下:
视图
Configurator.TabPanelView = Ember.View.extend({
classNames: ['tabPanel'],
templateName: 'tabPanel'
});
Run Code Online (Sandbox Code Playgroud)
模板
<script type="text/x-handlebars" data-template-name='tabPanel'>
<div class='tabHead'>
<ul>
{{#each tabViews}}
<li {{action "{{this.actionName}}" target="{{this.value}}"}} >{{this.title}}</li>
{{/each}}
</ul>
<div class="tab-content">{{outlet}}</div>
</div>
</script>
Run Code Online (Sandbox Code Playgroud)
在App中的用法
var tab= Configurator.TabPanelView.create({
classNames: ['assortment'],
tabViews: [{ title: 'First', value:'Foo', actionName: 'firstTab' },{title: 'Second', value:'Foo', actionName: 'secondTab' }],
firstTab: Ember.View.extend({
templateName: 'first'
}),
secondTab: Ember.View.extend({
templateName: 'second'
})
});
tab.appendTo("body");
Run Code Online (Sandbox Code Playgroud)
TabTemplate正确呈现,但如果我尝试单击li元素,则会抛出错误
未捕获错误:断言失败:目标<(Ember.View的子类):ember217>没有操作{{this.actionName}}
我也很好奇我是否应该使用路由器来实现标签.但据我所知,路由器在应用程序级别上运行,并且旨在用于单个UI组合.
我有以下查询:
SELECT employee,department,count(*) AS sum FROM items
WHERE ((employee = 1 AND department = 2) OR
(employee = 3 AND department = 4) OR
(employee = 5 AND department = 6) OR
([more conditions with the same structure]))
AND available = true
GROUP BY employee, department;
Run Code Online (Sandbox Code Playgroud)
如果"employee-department"对没有项目,则查询不返回任何内容.我希望它返回零代替:
employee | department | sum
---------+------------+--------
1 | 2 | 0
3 | 4 | 12
5 | 6 | 1234
Run Code Online (Sandbox Code Playgroud)
看起来这是不可能的,正如Matthew PK 在他对类似问题的回答中所解释的那样.我错误地假设Postgres可以以某种方式从WHERE子句中提取缺失值.
有一些技能是可能的.:)感谢Erwin Brandstetter!
这段代码工作正常:
val StringManifest = manifest[String]
val IntManifest = manifest[Int]
def check[T: Manifest] = manifest[T] match {
case StringManifest => "string"
case IntManifest => "int"
case _ => "something else"
}
Run Code Online (Sandbox Code Playgroud)
但是如果我们小写变量的第一个字母:
val stringManifest = manifest[String]
val intManifest = manifest[Int]
def check[T: Manifest] = manifest[T] match {
case stringManifest => "string"
case intManifest => "int"
case _ => "something else"
}
Run Code Online (Sandbox Code Playgroud)
我们将得到"无法访问的代码"错误.
这种行为的原因是什么?
我可以为Vectors编写以下内容:
def add[K,V](map: Map[K,Vector[V]], key: K, values: Vector[V]): Map[K,Vector[V]] = {
map + (key -> (map.getOrElse(key, Vector.empty) ++ values))
}
Run Code Online (Sandbox Code Playgroud)
用法:
scala> add(Map(1 -> Vector(1,2,3)), 1, Vector(4,5,6))
res1: Map[Int,Vector[Int]] = Map(1 -> Vector(1, 2, 3, 4, 5, 6))
Run Code Online (Sandbox Code Playgroud)
集的代码几乎相同:
def add[K,V](map: Map[K,Set[V]], key: K, values: Set[V]): Map[K,Set[V]] = {
map + (key -> (map.getOrElse(key, Set.empty) ++ values))
}
Run Code Online (Sandbox Code Playgroud)
如何制作适用于所有Iterables的单一功能?我试着像这样写:
def add[K,V](map: Map[K,Iterable[V]], key: K, values: Iterable[V]): Map[K,Iterable[V]] = {
map + (key -> (map.getOrElse(key, Iterable.empty) ++ values))
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我丢失了类型信息:
scala> …Run Code Online (Sandbox Code Playgroud)