小编hug*_*omg的帖子

JavaScript中的Lambda函数语法,不带花括号

我刚刚发现Firefox接受了以下(很棒的)语法

f = function(x) x+1;
f(17) //gives 18
Run Code Online (Sandbox Code Playgroud)

有谁知道这到底是怎么回事?这有什么标准吗?其他浏览器也接受吗?(我测试了IE 8,它给了我语法错误)

javascript lambda function

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

如何检测网站是否无法通过iframe嵌入?

我试图在iframe中嵌入一些随机网站.我收到这个错误:

Refused to display document because display forbidden by X-Frame-Options.
Run Code Online (Sandbox Code Playgroud)

我愿意尊重他们的意愿而不是嵌入它,但我希望能够检测到这是设置的,这样我就可以尝试重新加载另一页.在Javascript中有一个简单的方法吗?

javascript http frames

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

从C中的Lua函数返回'nil'与返回0值

一些Lua函数返回nil以通知用户该函数不能执行某些任务(例如tonumber(),string.find()).

在C中,returnig nil就是这样完成的:

int some_function(lua_State* L) {
  ...
  if (some condition) {
      lua_pushnil(L);
      return 1;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否可以做以下事情:

int some_function(lua_State* L) {
  ...
  if (some condition) {
      return 0;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

它更短.我尝试了它似乎有效,但我不知道这是否是按设计的.我检查了Lua的源代码,我没有看到这种return 0模式,所以我想知道这样做是否合法.

两种不同的返回方式是否nil相同?

(顺便说一句,我知道所有关于通过异常发出的信号错误(也就是说),lua_error()所以请不要提及它.)

更新:

我现在看到两种方法之间存在细微的差别:print((function() end)())没有打印,而是print((function() return nil end)())打印"nil".我不知道这有多重要.

c lua

9
推荐指数
2
解决办法
4744
查看次数

是否有删除/删除Postgres数据库中所有内容的命令?

我正在学习Postgres的方法,所以我在我设置的实验数据库中运行了很多测试.有没有一种简单的方法可以将数据库恢复到"干净的平板"状态,而无需从头开始重新创建数据库?我真的不想每次想要摆脱我制造的所有混乱时输入管理员密码或重新配置数据库权限.

postgresql

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

我可以在Javascript中重复功能参数名称吗?

以下功能合法且便携吗?

function(_, _, x){
    return x;
}
Run Code Online (Sandbox Code Playgroud)

有时候我想编写一个不使用最左边参数的回调,所以我想知道最简洁的方法是什么.


结论:

function(_1, _2, x) 可能就像它当时那么短.

javascript

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

为什么他们使用保留关键字'continue'来命名IndexedDB的Cursor对象中的函数?

根据http://www.w3.org/TR/IndexedDB/#widl-IDBCursor-continue,IDBCursor对象具有名为"continue"和"delete"的方法.那些保留的关键字不是吗?为什么他们会在规格中使用这些名称?

我的javascript编译器一直警告我保留关键字,它真的很烦人.

javascript html5 reserved-words indexeddb

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

在运行时创建Python类的最不好的方法是什么?

我正在使用一个接受类作为输入的ORM,我需要能够为它提供一些动态生成的类.目前,我正在做这样一个人为的例子:

def make_cls(_param):
   def Cls(object):
       param = _param
   return Cls

A, B = map(make_cls, ['A', 'B'])

print A().foo
print B().foo
Run Code Online (Sandbox Code Playgroud)

虽然这样可以正常工作,但感觉有点偏差:例如,两个类都<class '__main__.Cls'>在repl上打印.虽然名称问题不是什么大问题(我想我可以通过设置解决它__name__),但我想知道是否还有其他我不知道的事情.所以我的问题是:有没有更好的方法来动态创建类或者我的示例已经很好了?

python class

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

有没有办法在`string.format`的格式字符串中指定参数位置?

在C中,我可以告诉printf以不同于传递顺序的顺序打印参数:

printf("%2$d %1$d\n", 10, 20);
//prints 20 10
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在Lua中执行相同操作,则会出现错误:

print(string.format("%2$d %1$d\n", 10, 20))
Run Code Online (Sandbox Code Playgroud)
invalid option '%$' to 'format'
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个Lua格式字符串,导致string.format在第一个参数之前写入第二个参数?我正在使用国际化并且更改格式字符串很容易,但更改参数顺序要复杂得多.

我本来期望我在C中使用的技术与Lua一起工作,因为根据手册,它string.format应该接收相同的参数sprintf.是%2$指令不是ANSI C的一部分,或者是Lua的手动只是忘了提,他们不支持?

lua printf

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

代码重复和模板特化(当专用函数具有不同的返回类型时)

我正在创建一个模板化的类D<N>,使用方法(在本例中为operator()),它返回不同的类型,具体取决于N的值.

我只能通过创建两个单独的类声明来完成这项工作,但这是以大量代码重复为代价的.我也尝试创建一个公共基类来抛出常见的东西,但是我无法让构造函数继承正确而且不知道那个惯用的东西也是如此......

#include <cstdio>

template <int N>
struct D{
    int s;
    D(int x):s(x){}

    int yell(int x){
        printf("N=%d, %d\n", N, s+x);
        return s+x;
    }

    D<N-1> operator()(int x){
        D<N-1> d(yell(x));
        return d;
    }
};

template <>
struct D<1>{
    int s;
    D(int x): s(x){}

    int yell(int x){
        printf("N=%d, %d\n", 1, s+x);
        return s+x;
    }

    int operator()(int x){
        return yell(x);
    }
};


int main()
{
    D<2> f(42);
    printf("%d\n", f(1)(2));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何让我的代码更好看?

c++ templates template-specialization

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

我该如何处理Flex词法分析器中的词法错误?

我目前正在尝试使用Flex + Bison编写一个小编译器,但我在错误处理方面有点迷失,特别是如何使所有东西都融合在一起.为了激发讨论,请考虑我用于字符串文字的以下词法分析器片段:

["]          { BEGIN(STRING_LITERAL); init_string_buffer(); }
<STRING_LITERAL>{
    \\\\    { add_char_to_buffer('\\'); }
    \\\"    { add_char_to_buffer('\"'); }
    \\.     { /*Invalid escape. How do I treat this error?*/ }
    ["]     { BEGIN(INITIAL); yylval = get_string_buffer(); return TK_STRING; }
}
Run Code Online (Sandbox Code Playgroud)

如何处理无效转义的情况?现在我只是打印一条错误消息并打电话exit但我更愿意继续前进并在可能的情况下检测每个文件多个错误.

我的问题:

  • 我用什么功能打印出错误信息?以后野牛预计会出现同样的错误吗?如果我有词法分析器和解析器的单独文件,我在哪里放置yyerror的定义?
  • 我应该从我的行动中返回什么令牌代码?0为"文件结束"?一些特殊的TK_INVALID_STRING令牌?
  • 如何确保解析器可以在词法错误(无效的文字,流浪标点字符等)后继续解析?

yacc lex bison lexer flex-lexer

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