我在这个博客中看到了这个代码:Scala中的类型级编程:
// define the abstract types and bounds
trait Recurse {
type Next <: Recurse
// this is the recursive function definition
type X[R <: Recurse] <: Int
}
// implementation
trait RecurseA extends Recurse {
type Next = RecurseA
// this is the implementation
type X[R <: Recurse] = R#X[R#Next]
}
object Recurse {
// infinite loop
type C = RecurseA#X[RecurseA]
}
Run Code Online (Sandbox Code Playgroud)
#代码中有一个R#X[R#Next]我从未见过的运算符.由于难以搜索(被搜索引擎忽略),谁能告诉我它是什么意思?
在play1中,我通常会在操作中获取所有数据,直接在视图中使用它们.由于我们不需要在视图中显式声明参数,因此这非常简单.
但是在play2中,我发现我们必须request在视图的头部声明所有参数(包括),在动作中获取所有数据并将它们传递到视图中会非常无聊.
例如,如果我需要显示从首页的数据库加载的菜单,我必须在以下位置定义main.scala.html:
@(title: String, menus: Seq[Menu])(content: Html)
<html><head><title>@title</title></head>
<body>
<div>
@for(menu<-menus) {
<a href="#">@menu.name</a>
}
</div>
@content
</body></html>
Run Code Online (Sandbox Code Playgroud)
然后我必须在每个子页面中声明它:
@(menus: Seq[Menu])
@main("SubPage", menus) {
...
}
Run Code Online (Sandbox Code Playgroud)
然后我必须得到菜单并传递给每个动作查看:
def index = Action {
val menus = Menu.findAll()
Ok(views.html.index(menus))
}
def index2 = Action {
val menus = Menu.findAll()
Ok(views.html.index2(menus))
}
def index3 = Action {
val menus = Menu.findAll()
Ok(views.html.index(menus3))
}
Run Code Online (Sandbox Code Playgroud)
现在它只有一个参数main.scala.html,如果有很多,怎么办?
所以最后,我决定Menu.findAll()直接看到所有人:
@(title: String)(content: Html)
<html><head><title>@title</title></head>
<body>
<div>
@for(menu<-Menu.findAll()) {
<a …Run Code Online (Sandbox Code Playgroud) 我想删除一些mongodb集合,但这是一个异步任务.代码将是:
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/xxx');
var conn = mongoose.connection;
['aaa','bbb','ccc'].forEach(function(name){
conn.collection(name).drop(function(err) {
console.log('dropped');
});
});
console.log('all dropped');
Run Code Online (Sandbox Code Playgroud)
控制台显示:
all dropped
dropped
dropped
dropped
Run Code Online (Sandbox Code Playgroud)
all dropped在删除所有集合后,最简单的方法是打印什么?任何第三方都可用于简化代码.
def a = "a string"
def b = 'another'
Run Code Online (Sandbox Code Playgroud)
有什么区别吗?或者就像javascript让我们输入'并"更容易在字符串中?
在本文档中:http://docs.angularjs.org/guide/directive,它表示有一个replace指令配置:
template - 将当前元素替换为HTML的内容.替换过程将所有属性/类从旧元素迁移到新元素.有关更多信息,请参阅下面的创建组件部分.
javascript代码
app.directive('myd1', function(){
return {
template: '<span>directive template1</span>',
replace: true
}
});
app.directive('myd2', function(){
return {
template: '<span>directive template2</span>',
replace: false
}
});
Run Code Online (Sandbox Code Playgroud)
HTML代码
<div myd1>
original content should be replaced
</div>
<div myd2>
original content should NOT be replaced
</div>
Run Code Online (Sandbox Code Playgroud)
但最后一页看起来像:
directive template1
directive template2
Run Code Online (Sandbox Code Playgroud)
看来这replace不起作用.我想念什么吗?
我找到了以下代码片段:
List[T] forSome { type T }
Run Code Online (Sandbox Code Playgroud)
在forSome看起来像一个方法,但我的朋友告诉我,这是一个关键字.
我用Google搜索了一下,但发现的文件很少forSome.它是什么意思,我在哪里可以获得一些文件?
我曾经习惯mongodump转储我的mongodb数据库,它创建了一些bson文件dump/mydb
但我不知道如何使用它们.我试过mongoimport,但似乎无法导入bson数据.那么如何使用这些bson文件?如何将它们导入另一个mongodb?
我更愿意用tab比white space(可能会有点不同,大多数人的)
但是我发现,当我Enter在线的末尾点击时,它会添加一些空格,但不会添加制表符.所以,我必须删除它们并按Tab键.
我想知道如何将vim设置为:
enter在一行的末尾点击时,新行仅使用制表符启动我已经谷歌搜索了一段时间,但没有找到一个好的答案.先感谢您
UPDATE
@Alok提供的答案在大多数情况下都很有效.但我发现,有时候,它取决于文件类型.例如,如果您正在编辑一个haml文件,并有一个haml.vim在你的vimfiles/indent/,那么所有的标签将被转换为space.因此,如果您只想要它tab,您应该修改(或删除)相应的缩进文件.
在此页面中:http://docs.angularjs.org/guide/directive
指令定义对象
终奌站
如果设置为true,则当前优先级将是将执行的最后一组指令(当前优先级的任何指令仍将执行,因为未定义相同优先级的执行顺序).
我不太懂.什么current priority意思?如果有这样的指令:
请注意directive4有terminal:true和其他人有false.
如果有一个html标签包含所有5个指令:
<div directive1 directive2 directive3 directive4 directive5></div>
Run Code Online (Sandbox Code Playgroud)
5指令的执行顺序是什么?
我们可以使用WORKDIR将目录设置为工作目录Dockerfile,但如果我们没有设置,那么默认值是什么?
angularjs ×2
scala ×2
asynchronous ×1
docker ×1
dockerfile ×1
dump ×1
groovy ×1
indentation ×1
javascript ×1
mongodb ×1
mongodump ×1
mongoose ×1
mongorestore ×1
node.js ×1
string ×1
synchronous ×1
type-systems ×1
vim ×1