小编mar*_*st2的帖子

函数“缺少return语句”,但具有所有路径的类型保护

我具有以下接口和类型(所有接口和类型都可以更改)

interface Base {
    type: string;
}

interface A extends Base {
    type: "A";
    field: string;
}

interface B extends Base {
    type: "B";
    query: string;
}

interface C extends Base {
    type: "C";
    equal: number;
}

type BaseExtensions = A | B | C;

interface BaseWrapper<R extends BaseExtensions> {
    idType: string;
    base: R;
}

interface And {
    type: "AND";
    rules: Array<BaseWrapper<any>>;
}

interface Or {
    type: "OR";
    rules: Array<BaseWrapper<any>>;
}

type Rule<R extends BaseExtensions> = BaseWrapper<R> | And | …
Run Code Online (Sandbox Code Playgroud)

typescript

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

在Python 2.7中为什么grid = [["A"]*5]*5与grid = [] grid.append [...]不同

我试图在python 2.7中构建一个5x5网格的游戏板,表示为2维列表.我尝试将其编写为board = [["O"]*cols]*rows(cols和rows已经声明为5)但是当我尝试编辑索引处的值时,它会更改整行.例如

cols = 5
rows = 5
board = [["O"]*cols]*rows
Run Code Online (Sandbox Code Playgroud)

这打印:

[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]
Run Code Online (Sandbox Code Playgroud)

现在当我尝试更改索引的值时:

board[1][1] = "X"
Run Code Online (Sandbox Code Playgroud)

它打印:

[['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O']]
Run Code Online (Sandbox Code Playgroud)

我只想改变第1行第1行的值.

我也尝试过以下方法:

board = []
for i in xrange(5): …
Run Code Online (Sandbox Code Playgroud)

python list append python-2.x python-2.7

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

Python 2.7跟踪已打印的内容

我正在为我的学生编写代码检查员(我是导师).该项目是他们编写一个使用print关键字打印特定字符串的函数.我希望能够通过存储和匹配列表(或类似的东西)来测试他们打印的内容.基本设置是:

def checker():
    #run user code
    do some other things like save and check error messages etc
Run Code Online (Sandbox Code Playgroud)

现在,在这个checker函数的某个地方,我希望能够跟踪打印的内容.在Javascript中,我能够做到这样的事情:

var logs = [];
var hold_logger = console.log //saves the console.log so nothing gets ruined
console.log = function (x) { logs.push(x) };
Run Code Online (Sandbox Code Playgroud)

现在当我运行学生代码而不是打印到控制台时,它会将值推送到logs.我想在Python 2.7中实现同样的功能.

python logging python-2.7

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

Java中String.equals()的运行时复杂性

我想知道Java如何实现String.equals()方法以及这种操作的运行时复杂性.是检查每个单独的字符(导致O(N),其中N是长度)还是有某种有效的方法来比较两个会给出O(1)?

编辑:当我看到另一个问题和答案时,我想知道Java是否会自动进行某种实习,例如在String初始化时或在第一次调用compareTo或等于允许几乎所有调用时兑现一些值是O(1).如果我正确理解答案是必须积极实施String并且Java在幕后不做任何事情.

java string

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

使用CSRF令牌从iOS发布到Django Server

我有一个iOS应用程序,需要登录到使用Django的现有站点,并需要CSRF令牌登录.我无法改变这一点.

我当前的尝试是将GET发送到服务器,该服务器将返回CSRF,然后将该cookie作为字符串抓取并将其附加到POST请求.

NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:@"http://example.com"]];
[req setHTTPShouldHandleCookies:YES];
[NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    self.csrf_cookie = [[(NSHTTPURLResponse *)response allHeaderFields] valueForKey:@"Set-Cookie"];
    [self postLoginCredentialsEmail:@"user@example.com" password:@"password"];
}];

- (void)postLoginCredentialsEmail:(NSString *)email password:(NSString *)password {
    NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:@"http://example.com/login"]];
    [req addValue:(self.csrf_cookie != nil ? self.csrf_cookie : @"poo") forHTTPHeaderField:@"X-CSRFToken"];
    [req setHTTPMethod:@"POST"];
    NSString *postData = [NSString stringWithFormat:@"password=%@&;email=%@", password, email];
    [req setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-type"];
    [req setHTTPBody:[postData dataUsingEncoding:NSUTF8StringEncoding]];
    [NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, …
Run Code Online (Sandbox Code Playgroud)

django cookies django-csrf ios

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

Scala Parallel Seq 不符合 Seq

我对 Scala 比较陌生,但我想我了解它的类型系统和并行集合,但我无法理解这个错误:

我有一个功能

def myFun(a : Seq[MyType], b : OtherType) : Seq[MyType] = {
    val parA = a.par
    def update(q : OtherType)(x : MyType) : MyType = x.updated(q)
    parA.map(update(b))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误提示

Error:(63, 18) type mismatch;
 found   : scala.collection.parallel.ParSeq[MyType]
 required: Seq[MyType]
    parA.map(update(b))
                 ^ 
Run Code Online (Sandbox Code Playgroud)

如果ParSeq是的子类型,Seq那么为什么这不起作用?

(在我写这篇文章时,我意识到要修复它,我可以.seq对结果调用方法,但为什么我必须这样做?IDE 告诉我的 .toSeq 之间有什么区别,而 .toSeq.seq似乎已经起作用了)

parallel-processing scala

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

Mapbox-sdk-js 的 Typescript 导入子模块未找到错误

当使用 时,我偶然发现了打字稿导入中的奇怪行为@mapbox/mapbox-sdk。我已经安装了@mapbox/mapbox-sdk@types/mapbox__mapbox-sdk。代码本身可以工作。问题严格来说是打字。

首先我尝试了以下导入:

import { MapiRequest } from '@mapbox/mapbox-sdk/lib/classes/mapi-request';
import Geocoding from '@mapbox/mapbox-sdk/services/geocoding';
import Matrix from '@mapbox/mapbox-sdk/services/matrix';
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这 3 个导入出现 3 个类似的错误

Could not find a declaration file for module '@mapbox/mapbox-sdk/lib/classes/mapi-request'. '<path>/node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-request.js' implicitly has an 'any' type.
  Try `npm install @types/mapbox__mapbox-sdk` if it exists or add a new declaration (.d.ts) file containing `declare module '@mapbox/mapbox-sdk/lib/classes/mapi-request';`ts(7016)
Run Code Online (Sandbox Code Playgroud)

接下来我尝试导入基础 Mapbox 库。

Could not find a declaration file for module '@mapbox/mapbox-sdk/lib/classes/mapi-request'. '<path>/node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-request.js' implicitly has an 'any' type.
  Try …
Run Code Online (Sandbox Code Playgroud)

mapbox typescript definitelytyped

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