小编iFr*_*cht的帖子

是否存在重载&&和||的原因 不要短路?

运算符的短路行为&&,并||是程序员的好工具.

但为什么他们在超载时会失去这种行为?我理解运算符只是函数的语法糖,但操作符bool有这种行为,为什么它应该限制在这种类型?这背后有任何技术推理吗?

c++ operator-overloading short-circuiting logical-operators c++11

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

Typescript ReferenceError:未定义导出

尝试按照官方手册实现模块,我收到以下错误消息:

未捕获的ReferenceError:未定义导出

在app.js:2

但我的代码中没有任何地方使用该名称exports.

我怎样才能解决这个问题?


app.ts

let a = 2;
let b:number = 3;

import Person = require ('./mods/module-1');
Run Code Online (Sandbox Code Playgroud)

模块1.T

 export class Person {
  constructor(){
    console.log('Person Class');
  }
}
export default Person;
Run Code Online (Sandbox Code Playgroud)

tsconfig.json

{
   "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": true,
        "outDir": "scripts/"
    },
    "exclude": [
        "node_modules"
    ]
}
Run Code Online (Sandbox Code Playgroud)

module typescript

76
推荐指数
11
解决办法
13万
查看次数

-bash:意外标记'newline'附近的语法错误

要重置SolusVM的管理员密码,我正在执行以下命令:

php /usr/local/solusvm/scripts/pass.php --type=admin --comm=change --username=<ADMINUSERNAME>
Run Code Online (Sandbox Code Playgroud)

执行此操作时,将打印以下错误消息:

-bash: syntax error near unexpected token `newline'
Run Code Online (Sandbox Code Playgroud)

这个问题的原因是什么?我以root身份运行命令.

syntax bash newline token

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

bool短路的&=和| =运算符?

在C++中编写这样的代码时:

bool allTrue = true;
allTrue = allTrue && check_foo();
allTrue = allTrue && check_bar();
Run Code Online (Sandbox Code Playgroud)

check_bar()如果check_foo()退回,将不会被评估false.这称为短路或短路评估,是惰性评估原则的一部分.

这是否适用于复合赋值运算符&=

bool allTrue = true;
allTrue &= check_foo();
allTrue &= check_bar(); //what now?
Run Code Online (Sandbox Code Playgroud)

用逻辑OR替换所有&with |truewith false.

c++ boolean lazy-evaluation short-circuiting compound-assignment

38
推荐指数
5
解决办法
3万
查看次数

在python中导入之前设置LD_LIBRARY_PATH

Python使用PYTHONPATH环境变量来确定它应该在哪些文件夹中查找模块.您可以通过修改来解决它sys.path,它可以很好地用于纯Python模块.但是当一个模块使用共享对象文件或静态库时,它会在LD_LIBRARY_PATH(在linux上)查找它们,但是根据我所知,这不能轻易改变并且是平台相关的.

这个问题的快速修复当然是设置环境变量或调用脚本LD_LIBRARY_PATH=. ./script.py,但是你必须为你打开的每个新shell再次设置它.此外,.so我的情况下的文件将始终与文件位于同一目录中.py,但很可能会移动到另一个绝对路径,所以我想每次调用脚本时自动设置它们.

如何编辑Python解释器在运行时独立查找库平台的路径?

编辑:

我已经尝试过os.environ['LD_LIBRARY_PATH'] = os.getcwd(),但无济于事.

python import environment-variables sys

34
推荐指数
3
解决办法
5万
查看次数

每个(in)和for(:)之间有什么区别?

作为拥有python背景的人,当我第一次看到for ( : )循环时,我感到非常惊讶:

vector<int> vec = {1,2,3,4};
int sum = 0;
for (int i : vec){
    sum += i;
}
//sum is now 10
Run Code Online (Sandbox Code Playgroud)

这是一个非常有用的结构,只要您不需要多次索引值,就应该使用它.

但今天我发现还有一个for each ( in )循环,使用如下:

vector<int> vec = {1,2,3,4};
int sum = 0;
for each (int i in vec){
    sum += i;
}
//sum is now 10
Run Code Online (Sandbox Code Playgroud)

有趣的是,第二个谷歌的谷歌搜索结果主要与微软有关,而不是通常的c ++参考网站.

这两个循环之间有什么区别?

c++ loops for-loop

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

在类模板实例化中明确使用某些参数的默认值

类模板可以有多个参数都具有默认值.

template<typename UnderlyingT0 = int, typename UnderlyingtT1 = long, typename StringT = std::string>
struct options;
Run Code Online (Sandbox Code Playgroud)

使用默认参数来设置模板很简单:

options<> my_default_options;
Run Code Online (Sandbox Code Playgroud)

但是,如果我想更改参数的子集呢?

options<int, int, std::wstring> wstring_options;
Run Code Online (Sandbox Code Playgroud)

int第一个参数的默认值并不明显,而第二个参数则不是.有没有类似的东西

options<default, int, std::wstring> wstring_options;
Run Code Online (Sandbox Code Playgroud)

在C++中?

c++ templates default c++11

22
推荐指数
3
解决办法
1156
查看次数

为什么一些numpy数据类型JSON可序列化而其他不是?

Numpy有很多不同的基本类型,所有这些都列在这里.

我已经在我的程序中找到了一个float32不能进行JSON序列化的问题,所以我开始测试上面列表中的所有数据类型:

>>> import numpy as np
>>> from json import dumps
>>> dumps(np.bool(True))
'true'
>>> dumps(np.bool_(True))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python3.4/json/encoder.py", line 192, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.4/json/encoder.py", line 250, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.4/json/encoder.py", line 173, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: True is not JSON serializable
>>> …
Run Code Online (Sandbox Code Playgroud)

python serialization json types numpy

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

将字符串缩小为字符串文字联合

我想将字符串缩小为字符串文字联合。换句话说,我想检查字符串是否是我的文字联合的可能值之一,以便这将起作用(如果运算符couldbe存在)。

type lit = "A" | "B" | "C";
let uni: lit;
let str = "B";
if(str couldbe lit){
    uni = str;
} else {
    doSomething(str);
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我尝试使用if (str instanceof lit),但这似乎不起作用。使用keyof迭代字符串联合也不起作用,因为允许的值本身不是键。

一种方法是switch对每个可能的值使用一个 case,但如果lits 允许的值发生变化,这可能会导致细微的错误。

string types literals unions typescript

8
推荐指数
2
解决办法
2693
查看次数

Pylint抱怨将字符串与文字与'is'进行比较

请考虑以下代码段:

my_string = 'asdf'
print(my_string is 'xfje') #R0123
Run Code Online (Sandbox Code Playgroud)

Pylint R0123在第二行返回推荐,我在错误消息wiki上找不到.不过,在这部分文档中提到了它:

文字比较(R0123):

与文字的比较在将对象与文字进行比较时使用,这通常是您不想做的事情,因为您可以比较不同于预期的文字.

这个解释对我没有任何帮助.我知道is用于两个字符串对象之间的比较可能会导致与预期不同的结果,但是为了将对象与文字进行比较,它与之相同==.使用时==,错误消失.

我为什么不在is这里使用?

python equality pylint python-3.x

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