小编sep*_*p2k的帖子

即使给出正确的代码,eval也会出现语法错误

我有以下代码,它使用的eval功能:

lines = self.fulltext.splitlines()

CURRENT = 0

extractors = { "solar zenith angle" : (CURRENT, 1, "self.solar_z"),
                       "ground pressure" : (CURRENT, 2, "self.ground_pressure")                     

             }

print locals()

for line in lines:
    for label, details in extractors.iteritems():
        if label in line:
            if details[0] == CURRENT:
                values = line.split()
                eval("%s = values[%d]" % (details[2], details[1]))
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到以下错误:

eval("%s = values[%d]" % (details[2], details[1]))
  File "<string>", line 1
    self.solar_z = values[1]
                 ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么是这样?self.solar_z已定义,并且eval'd语句看起来正确.

python eval

7
推荐指数
2
解决办法
4137
查看次数

Scala:在类型别名不匹配时强制执行编译错误

在分配共享相同底层类型的不同类型别名时,有没有办法获得编译时错误(或至少是警告)?

换句话说,我说这个代码:

type Address = String
type City = String

def foo(x:Address) = ...
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我想获得编译时错误/警告:

val city: City = "Dublin"
foo(city)
Run Code Online (Sandbox Code Playgroud)

据我所知,编译器允许它,因为它们是相同的底层类型.

settings scala type-alias

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

用Java 11编译Java和groovy

有谁知道哪个编译器/插件使用Java 11版本编译Java和groovy代码?

我已经尝试了GMavenPlus,Groovy eclipse编译器和Maven的Ant插件。到目前为止没有成功。

java groovy

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

6
推荐指数
3
解决办法
5510
查看次数

为了能够在我的Android手机上编写和编辑python程序,我需要遵循哪些步骤?

我是初学者,有编程和Python.

我想要做的是阅读并遵循书中的例子,例如"学习Python困难之路"和"Hello world:计算机程序设计为孩子和其他人".

我希望能够在我乘坐公共汽车和火车时在我的android(xperia arc)手机上做示例问题.火车穿过隧道,所以这需要在没有互联网的情况下工作.这意味着repl.it和ideone将不起作用(我认为).

到目前为止,我已经安装了SL4A脚本层(我想 - 不知道如何检查以确保它正常工作)并且我安装了P4A(python for android).我还需要什么才能获得终端/ shell窗口?

python ide android sl4a

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

是否按照编写的顺序测试if是否为if-else ... if-else ... if-else阻止?

是否有任何保证,if-else if-else if-else块的ifs 按照它们的编写顺序进行测试.

我问这是因为我经常试图通过最频繁的情况来首先优化我的代码,我想知道编译器做的一些优化是否会改变测试if的顺序.

所以,如果我正在写这样的代码:

    if (cond1) // First if (for the case I have the most often)
    {
            doSomething1();
    }
    else if (cond2) // Second if (for the second case I have the most often)
    {
            doSomething2();
    }
    else if (cond3) // Third if (for the third case I have the most often)
    {
            doSomething3();
    }
    else
    {
            doElse();
    }
Run Code Online (Sandbox Code Playgroud)

是否有任何保证在编译(发布)后,第一个if将被测试,然后是第二个if,然后是第三个if(如果没有条件为真,则最后执行else).

我知道在调试时,ifs按照我编写的顺序执行,但是当程序编译发布时它会保持正常(我主要使用的是g ++和visual studio的最新版本).

此外,由于条件可以对环境产生影响(如if (i=a)if(myfunction())),它们应该按照书面执行,但我想知道我是否缺少编译器可以执行的某些优化,这会改变ifs的测试顺序.特别是,如果条件没有这样的副作用:

void test(int a)
{
    if (a …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement

6
推荐指数
3
解决办法
930
查看次数

zlib,严厉的编译器警告和配置测试

我正在尝试从命令行编译zlib,我在使用时收到此消息-Wall -Wextra -Wconversion(完整的交叉编译脚本如下):

编译器错误报告对于./configure(可能是删除-Werror)来说太苛刻了 .

这是生成线的配置测试:

cat > $test.c << EOF
int foo() { return 0; }
EOF
echo "Checking for obsessive-compulsive compiler options..." >> configure.log
if try $CC -c $CFLAGS $test.c; then
  :
else
  echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log
  leave 1
fi
Run Code Online (Sandbox Code Playgroud)

我不清楚究竟是什么判断过于严厉(特别是因为-Werror不存在).我也不太清楚测试中使用的示例程序是做什么的,所以我不清楚判断编译器警告"过于苛刻"的标准是什么.

什么是zlib抱怨太苛刻了?


#! /bin/sh

export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"

export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
export CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
export LD=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
export AR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
export RANLIB=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib

export CFLAGS="-Wall -Wextra -Wconversion …
Run Code Online (Sandbox Code Playgroud)

warnings zlib configure

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

SFSafariViewController重定向不起作用

我正试图用来SFSafariViewController呈现用户需要填写的表格。在表单上,​​有一个“后退”按钮,它会触发一个URL方案,该URL方案会打开该应用程序。问题在于,application:openURL:options:当网页触发url方案时,不会调用该方法。当我使用Safari打开表单而不是打开表单时SFSafariViewController,该方案有效,并且该application:openURL:options:方法被调用。

有什么想法为什么该计划不起作用SFSafariViewController以及如何解决?

safari mobile-safari ios ios9

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

当运算符优先级表明不应该进行短路评估时,为什么这样做?

JavaScriptJava中,equals运算符(=====)的优先级高于OR运算符(||).然而,两种语言(JS,Java)都支持if语句中的短路:

当我们有if(true || anything()),anything()没有评估.

您还可以使用以下表达式:true || foo == getValue())- 例如,在输出语句中,例如console.log(...);,或在赋值中.

现在,根据运算符优先级,不应该发生短路,就优先级而言==== ==> ||.(换句话说,比较应该首先发生,getValue()应该调用,因为等式检查具有比OR比较更高的优先级.)但它确实如此.getValue()没有被调用(可以通过将输出语句放入其正文中来轻松检查).

为什么(当运算符优先说它不应该时,短路工作)?
还是我困惑的事情?

javascript java operator-precedence short-circuiting

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

yacc 中 $$ = $1 + $3 是什么意思?

莱克斯部分:

%%
[0-9]+ { yyval = atoi (yytext); return num; }
%%
Run Code Online (Sandbox Code Playgroud)

Yacc 部分:

%token num 
%%
exp:num '+' num ; {$$ = $1 + $3;}
%%
Run Code Online (Sandbox Code Playgroud)
  1. 这部分代码中$$,$1$2代表什么?
  2. 我现在如何打印$$
  3. 如果我5+9作为输入发送到该程序5并被9lex 程序识别,但是 呢+?符号+是否发送到 lex?

yacc lex

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