有没有办法在某些字段上查询具有不同值的对象?例如,我有记录:
{ 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中具有相同值的记录,在这种情况下无关紧要.
我试图用Guice注入泛型类型.我有Repository <T>,它位于Cursor类中.
public class Cursor<T> {
@Inject
protected Repository<T> repository;
Run Code Online (Sandbox Code Playgroud)
所以当我创建Cursor <User>时,我也希望Guice将我的存储库注入Repository <User>.有没有办法做到这一点?
我试图将成员函数指针传递给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风格的函数?
我有一个由单词组成的字符串输入。我正在使用 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对象在使用它们作为关联数组时的作用.
来自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的这种行为发生变化吗?
我从简单的界面开始:
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)
编辑:有没有最佳实践来实现这种行为?