小编Fre*_*ind的帖子

`#`运算符在Scala中意味着什么?

我在这个博客中看到了这个代码: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]我从未见过的运算符.由于难以搜索(被搜索引擎忽略),谁能告诉我它是什么意思?

type-systems scala

125
推荐指数
3
解决办法
1万
查看次数

如何避免在play2中到处传递参数?

在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)

playframework-2.0

125
推荐指数
5
解决办法
4万
查看次数

在Javascript中,等待一些异步任务完成的最简单方法是什么?

我想删除一些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在删除所有集合后,最简单的方法是打印什么?任何第三方都可用于简化代码.

javascript asynchronous synchronous mongoose node.js

112
推荐指数
5
解决办法
17万
查看次数

groovy中单引号或双引号中字符串的区别是什么?

def a = "a string"
def b = 'another'
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?或者就像javascript让我们输入'"更容易在字符串中?

string groovy

83
推荐指数
2
解决办法
3万
查看次数

如何使用指令定义的`replace`?

在本文档中: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不起作用.我想念什么吗?

现场演示:http://plnkr.co/edit/rGIgmjO81X2UxJohL4HM?p=preview

angularjs angularjs-directive

80
推荐指数
3
解决办法
12万
查看次数

Scala中的forSome关键字是什么?

我找到了以下代码片段:

List[T] forSome { type T }
Run Code Online (Sandbox Code Playgroud)

forSome看起来像一个方法,但我的朋友告诉我,这是一个关键字.

我用Google搜索了一下,但发现的文件很少forSome.它是什么意思,我在哪里可以获得一些文件?

scala

69
推荐指数
1
解决办法
1万
查看次数

如何使用mongodump转储的数据?

我曾经习惯mongodump转储我的mongodb数据库,它创建了一些bson文件dump/mydb

但我不知道如何使用它们.我试过mongoimport,但似乎无法导入bson数据.那么如何使用这些bson文件?如何将它们导入另一个mongodb?

dump mongodb mongorestore mongodump

66
推荐指数
4
解决办法
6万
查看次数

如何在vim中仅使用制表符(而不是空格)

我更愿意用tabwhite space(可能会有点不同,大多数人的)

但是我发现,当我Enter在线的末尾点击时,它会添加一些空格,但不会添加制表符.所以,我必须删除它们并按Tab键.

我想知道如何将vim设置为:

  1. 仅使用制表符缩进行
  2. 选项卡看起来像4个空格,但实际上是一个选项卡
  3. enter在一行的末尾点击时,新行仅使用制表符启动

我已经谷歌搜索了一段时间,但没有找到一个好的答案.先感谢您


UPDATE

@Alok提供的答案在大多数情况下都很有效.但我发现,有时候,它取决于文件类型.例如,如果您正在编辑一个haml文件,并有一个haml.vim在你的vimfiles/indent/,那么所有的标签将被转换为space.因此,如果您只想要它tab,您应该修改(或删除)相应的缩进文件.

vim indentation

64
推荐指数
2
解决办法
5万
查看次数

如何理解指令的`terminal`?

在此页面中:http://docs.angularjs.org/guide/directive

指令定义对象

终奌站

如果设置为true,则当前优先级将是将执行的最后一组指令(当前优先级的任何指令仍将执行,因为未定义相同优先级的执行顺序).

我不太懂.什么current priority意思?如果有这样的指令:

  1. 带有{priority:1,terminal:false}的directive1
  2. 带有{priority:10,terminal:false}的directive2
  3. 带有{priority:100,terminal:false}的directive3
  4. 带有{priority:100,terminal:true}的directive4 //这是真的
  5. 带有{priority:1000,terminal:false}的directive5

请注意directive4terminal:true和其他人有false.

如果有一个html标签包含所有5个指令:

<div directive1 directive2 directive3 directive4 directive5></div>
Run Code Online (Sandbox Code Playgroud)

5指令的执行顺序是什么?

angularjs angularjs-directive

64
推荐指数
1
解决办法
3万
查看次数

Docker中的默认WORKDIR是什么?

我们可以使用WORKDIR将目录设置为工作目录Dockerfile,但如果我们没有设置,那么默认值是什么?

docker dockerfile

64
推荐指数
4
解决办法
6万
查看次数