小编pet*_*ina的帖子

获取不同的记录值

有没有办法在某些字段上查询具有不同值的对象?例如,我有记录:

{ id : 1, name : "my_name", salary : 1200 }
{ id : 2, name : "my_name", salary : 800 }
{ id : 3, name : "john", salary : 500 }
Run Code Online (Sandbox Code Playgroud)

查询:使用NOT_THE_SAME(名称)查找所有内容

我只想要id为1和3的记录,因为我指定我不希望在字段name或2和3中具有相同值的记录,在这种情况下无关紧要.

mongodb

18
推荐指数
4
解决办法
9037
查看次数

Guice注入通用类型

我试图用Guice注入泛型类型.我有Repository <T>,它位于Cursor类中.

public class Cursor<T> {

    @Inject
    protected Repository<T> repository;
Run Code Online (Sandbox Code Playgroud)

所以当我创建Cursor <User>时,我也希望Guice将我的存储库注入Repository <User>.有没有办法做到这一点?

java generics guice

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

将成员函数指针传递给c样式函数

我试图将成员函数指针传递给c风格的函数(因为它是C中的lib)

它想要的指针定义为:

void (*)(int, const char*)
Run Code Online (Sandbox Code Playgroud)

所以我试图传递的功能是:

void Application::onError(int error, const char *description)
Run Code Online (Sandbox Code Playgroud)

我试图通过这段代码传递:

setCallback(bind(&Game::onError, this, placeholders::_1, placeholders::_2));
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

cannot convert ‘std::_Bind_helper<false, void (Application::*)(Application*, int,
const char*), Application* const, const std::_Placeholder<1>&, const 
std::_Placeholder<2>&>::type {aka std::_Bind<std::_Mem_fn<void (Application::*)
(Application*, int, const char*)>(Application*, std::_Placeholder<1>,
std::_Placeholder<2>)>}’ to ‘GLFWerrorfun {aka void (*)(int, const char*)}’ for 
argument ‘1’ to ‘void (* glfwSetErrorCallback(GLFWerrorfun))(int, const char*)’
glfwSetErrorCallback(bind(&Application::onError, this, placeholders::_1, placeholders::_2));
Run Code Online (Sandbox Code Playgroud)

有没有办法成功将成员函数作为绑定函数传递给c风格的函数?

c c++ pointers callback c++11

14
推荐指数
1
解决办法
2836
查看次数

从文件中字符的索引获取行号

我有一个由单词组成的字符串输入。我正在使用 regex.exec (g) 按函数获取所有单词getWord(input)

所以我的输入可能如下所示: word word2 someword blah

我从 exec 得到的是包含index匹配的对象。所以它是数组: [ 'word', index: 0, input: "..."] ... [ 'someword', index: 11, input: "..."] ...

我需要的是使用索引(11)轻松计算出单词“someword”在第2行(因为我没有任何其他值告诉我行数是多少)

这是我想到的:匹配 '\n's 直到你将 \n 与更高的索引匹配,然后是单词的索引。不确定这在 10k 行文件中是否不会出现问题。

想法片段:

getLineFromIndex: (index, input) ->
  regex = /\n/g
  line = 1

  loop
    match = regex.exec(input)
    break if not match? or match.index > index

    line++

  return line
Run Code Online (Sandbox Code Playgroud)

这里可以进行一些大的优化。我可以保存正则表达式和最后一个匹配项,因此每次要检查行号时我不会迭代所有输入。仅当最后一个匹配的索引低于当前索引时,才会执行正则表达式。

这是最终的优化思路:

  ###
    @variable content [String] is input content
  ###
  getLineFromIndex: (index) ->
    @lineMatcher = @lineMatcher || …
Run Code Online (Sandbox Code Playgroud)

javascript regex string coffeescript

5
推荐指数
1
解决办法
3272
查看次数

javascript中的对象属性排序

我试图理解javascript对象在使用它们作为关联数组时的作用.

来自ECMA:

4.3.3对象是Object类型的成员.它是一个无序的属性集合,每个属性都包含一个原始值,对象或函数.存储在对象属性中的函数称为方法.

在浏览器中使用它们(chrome):

x = { 2: 'a', 3: 'b', 1: 'c' }
> Object {1: "c", 2: "a", 3: "b"}

y = { 'b': 2, 'c': 3, 'a': 1 }
> Object {b: 2, c: 3, a: 1}
Run Code Online (Sandbox Code Playgroud)

虽然在第一个示例中将数字作为键,但是它们变得有序,在第二个示例中使用字符串,它们不会(ordered = a,b,c).

我正在使用这些对象与字符串键,我真的不希望他们在应用程序的某个阶段(如果这甚至可能)改变顺序,因为它可能会崩溃我正在使用的管道.

问题是,这种方法对于每台javascript机器都是安全和正常的,还是应该使用其他方法来保证订单不会改变?

谢谢!

编辑:我使用的是node.js,它运行在V8(chrome引擎)上,"按插入顺序排序非数字属性"(Felix Kling).愿V8的这种行为发生变化吗?

javascript v8

2
推荐指数
1
解决办法
2051
查看次数

使用可变参数实现接口方法

我从简单的界面开始:

type Module interface {
    Init(deps ...interface{}) error
}
Run Code Online (Sandbox Code Playgroud)

我想,实现将非常简单,因为这个方法应该匹配任意数量的提供的参数.这就是我最终得到的代码,思考,TestModule实现Module接口.

type TestModule struct {
}

func (m *TestModule) Init(str string) error {
    return nil
}
Run Code Online (Sandbox Code Playgroud)

但是,当我想将TestModule传递给任何需要Module的函数时,我收到此错误:

不能将模块(类型*TestModule)用作testFunc参数中的类型Module:

func testFunc(module Module) {

}
Run Code Online (Sandbox Code Playgroud)

编辑:有没有最佳实践来实现这种行为?

interface go

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

标签 统计

javascript ×2

c ×1

c++ ×1

c++11 ×1

callback ×1

coffeescript ×1

generics ×1

go ×1

guice ×1

interface ×1

java ×1

mongodb ×1

pointers ×1

regex ×1

string ×1

v8 ×1