小编mav*_*vnn的帖子

检查输入是否是字符串的列表/元组或单个字符串

我有一个方法,我希望能够接受单个字符串(路径,但不一定是运行代码的机器上存在的路径)或字符串列表/元组.

鉴于字符串充当字符列表,我如何判断该方法收到了哪种类型?

我希望能够接受单个条目的标准字符串或unicode字符串,以及多个列表或元组,所以isinstance似乎不是答案,除非我错过了一个聪明的技巧(比如服用)共同祖先类的优势?).

Python版本是2.5

python

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

你能用Func <T>类型命名参数吗?

我有一个"调度图"定义如下:

private Dictionary<string, Func<DynamicEntity, DynamicEntity, IEnumerable<DynamicEntity>, string>> _messageProcessing;
Run Code Online (Sandbox Code Playgroud)

这允许我根据DynamicEntity实例的名称轻松地分派到不同的方法.

为了避免被更多地维护代码的每个人所厌恶,有没有办法在Func中命名参数以给出哪些DynamicEntity是哪个?

c# anonymous-function

19
推荐指数
3
解决办法
7247
查看次数

歧视工会可以相互提及吗?

我正在使用受歧视的联合构建表达式树.以下代码:

type IntExpression =
    | TrueIsOne of BoolExpression

type BoolExpression =
    | LessThan of IntExpression * IntExpression
    | And of BoolExpression * BoolExpression
    | Or of BoolExpression * BoolExpression
    | Bool of bool
Run Code Online (Sandbox Code Playgroud)

抛出错误,因为未定义BoolExpression.交换定义只会导致反向(IntExpression未定义),如您所料.

有没有解决的办法?

recursion f# mutual-recursion discriminated-union

14
推荐指数
2
解决办法
744
查看次数

如何在表的一个字段中按最小值分组,保留同一行中的所有值?

我有这样一张桌子:

Field1 | Field2 | Field3
1      | 1      | 22
1      | 2      | 10
2      | 5      | 40
2      | 2      | 55
Run Code Online (Sandbox Code Playgroud)

我想按Field1分组,然后使用最小的Field2从行的其余部分获取值,例如:

Field1 | Field2 | Field3
1      | 1      | 22
2      | 2      | 55
Run Code Online (Sandbox Code Playgroud)

请注意,这与选择每行的最小值不同,这将给出:

Field1 | Field2 | Field3
1      | 1      | 10
2      | 2      | 40
Run Code Online (Sandbox Code Playgroud)

哪些与我的数据将是一个毫无意义的结果.

有人有一个通用(即多数据库)解决方案吗?我敢肯定它一定是个问题!

我真的可以使用在sqlite和ms-access中工作的解决方案,而sql server将是一个奖励.

sql sql-server sqlite ms-access

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

什么时候关闭属性评估?

我们的代码库中的几个方法使用'MaybeObject',可以在结果可能已知时传递给函数,或者可能依赖于尚未执行的外部Web服务调用.例如,下面的属性可以具有指定的已知值,或者如果未指定并在异步调用完成后调用它将返回异步调用的结果.

private string _internalString;
public string stringProp
{ 
    get
    {
        if (!string.IsNullOrEmpty(_internalString))
            return _internalString;
        return resultOfAsyncCallFromSomewhereElse;
    }

    set { _internalString = value; }
}
Run Code Online (Sandbox Code Playgroud)

显然,尝试在异步调用完成之前引用该属性会导致空引用异常,因此我们还有一个标志来检查该值是否可用.

问题是,在下面的代码中会创建lambda尝试和评估stringProp(可能还没有填充),或者是否会推迟评估直到调用结果Action(在检查异步操作完成后)?

public Action ExampleMethod(MaybeObject maybe)
{
    return () => doSomethingWithString(maybe.stringProp);
}
Run Code Online (Sandbox Code Playgroud)

c# lambda closures

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

为什么调用AddDllDirectory失败并显示"参数不正确"?

为什么以下代码不起作用?

open System
open System.Runtime.InteropServices
open System.ComponentModel

[<DllImport("kernel32")>]
extern int AddDllDirectory(string NewDirectory)

[<EntryPoint>]
let main argv = 
    let result = AddDllDirectory("c:\\")
    if result = 0 then
        printfn "%A" <| Win32Exception(Marshal.GetLastWin32Error())
        // Prints: "System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect"
    System.Console.ReadLine() |> ignore
    0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)

.net pinvoke f#

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

问题使用ADO通过Python将数据插入MS Access数据库

[编辑2:以下答案中的更多信息和调试...]

我正在编写一个python脚本,将MS Access数据库导出为一系列文本文件,以便进行更有意义的版本控制(我知道 - 为什么Access?为什么我不使用现有的解决方案?让我们说限制不是技术性质).

我已经通过comtypes库使用ADO和ADOX成功导出了数据库的全部内容和结构,但是我在重新导入数据时遇到了问题.

我将每个表的内容导出到一个文本文件中,每行都有一个列表,如下所示:

[-9, u'No reply']
[1, u'My home is as clean and comfortable as I want']
[2, u'My home could be more clean or comfortable than it is']
[3, u'My home is not at all clean or comfortable']
Run Code Online (Sandbox Code Playgroud)

以下函数导入所述文件:

import os
import sys
import datetime
import comtypes.client as client
from ADOconsts import *
from access_consts import *

class Db:
    def create_table_contents(self, verbosity = 0):
        conn = client.CreateObject("ADODB.Connection")
        rs = client.CreateObject("ADODB.Recordset")
        conn.ConnectionString = self.new_con_string
        conn.Open()
        for …
Run Code Online (Sandbox Code Playgroud)

python ms-access ado comtypes

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

使用Python comtypes库向Excel添加查询表时出现问题

我正在尝试使用Python comtypes库在excel电子表格中创建一个QueryTable,但是得到一个相当无意义的错误......

在vba中(在工作簿中的模块中),以下代码可以正常工作:

Sub CreateQuery()
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim ws As Worksheet
    Dim qt As QueryTable

    Set ws = ActiveWorkbook.Sheets(1)

    Set con = New ADODB.Connection
    con.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\to\Db.mdb;")

    Set rs = New ADODB.Recordset
    rs.Open "Select * from [tbl Base Data];", con

    Set qt = ws.QueryTables.Add(rs, ws.Range("A1"))
    qt.Refresh
End Sub
Run Code Online (Sandbox Code Playgroud)

但是以下Python代码:

import sys
import comtypes.client as client

def create_querytable():
    constring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Path\\to\\Db.mdb"
    conn = client.CreateObject("ADODB.Connection", dynamic = True)
    rs = client.CreateObject("ADODB.Recordset", dynamic = True)

    SQL …
Run Code Online (Sandbox Code Playgroud)

python com excel vba comtypes

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

在Python中通过名称作为字符串调用类型

我知道使用globals(),locals()和getattr通过字符串来反馈Python中的内容(如本问题所示),但除非我遗漏了一些明显的东西,否则我似乎无法使用它来调用类型.

例如:

In [12]: locals()['int']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)

e:\downloads_to_access\<ipython console> in <module>()

KeyError: 'int'

In [13]: globals()['int']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)

e:\downloads_to_access\<ipython console> in <module>()

KeyError: 'int'

getattr(???, 'int')...
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方法是什么?

python getattr

5
推荐指数
2
解决办法
1948
查看次数

从SpecFlow设置Nunit TimeoutAttribute

我已经使用SpecFlow编写了几个长期运行的端到端集成测试,但是由于Nunit超时而导致它们失败.

将[Timeout(x)]属性添加到TestFixture可以解决问题,但每次更新功能时都会被覆盖.

如何以SpecFlow尊重的方式删除或延长超时?

.net testing integration-testing nunit specflow

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

如何在F#类型提供程序中构建一个仲裁curry函数?

在尝试让类型提供程序生成更多惯用代码时,我开始考虑从提供程序返回curried函数.

这段代码片段:

let lambdaTest () =
    let inner =
        <@ fun myInt ->
                fun int2 -> sprintf "A string! %d %d" myInt int2 @>
    let innerType = inner.GetType()
    ProvidedProperty(
        "lambda", 
        innerType.GenericTypeArguments.[0], 
        IsStatic = true, 
        GetterCode = fun _ -> inner.Raw)
Run Code Online (Sandbox Code Playgroud)

int -> int -> string如果我事先知道所需的签名,似乎可以提供; 但理想情况下我想动态构建嵌套的lambda函数,如下所示:

let rec inline curry<'a> format (func: Quotations.Expr<'a>) : Quotations.Expr<'a> =
    match format with
    | FString f ->
        curry<string -> 'a> f <@ fun (s : str) -> %func @>
    | FInt f -> …
Run Code Online (Sandbox Code Playgroud)

f# currying type-providers

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

震动规则可以确定自上次构建以来哪些"需求"发生了变化吗?

我正在为一个大型Ruby(+其他东西)代码库构建一个基于摇动的构建系统,但我正在努力处理期望将文件列表传递给"构建"的Ruby命令.

拿Rubocop(一种linting工具).我可以看到三个选项:

  • 需要单独的所有Ruby文件; 如果他们改变了,对每个改变的文件改变单个文件运行rubocop(在第一次构建时非常慢或者因为rubocop有很大的启动时间而导致许多ruby文件发生变化)
  • 需要所有Ruby文件; 如果有任何更改,请对所有 ruby文件运行rubocop (如果只有一个或两个文件已更改,则速度非常慢,因为如果文件已更改,则rubocop运行缓慢)
  • 需要所有Ruby文件; 如果有任何更改,请通过rubocop传递Shake检测到的已更改依赖项列表

前两个规则很容易构建,但我的问题是我无法弄清楚如何将最后一个案例表示为一个动摇规则.有人可以帮忙吗?

shake-build-system

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

我可以用F#中的属性声明相互递归的函数吗?

所以; 这段代码编译得很好(虽然我不建议运行它...):

let rec firstFunc () =
  secondFunc ()

and secondFunc () =
  firstFunc ()
Run Code Online (Sandbox Code Playgroud)

但!此代码不会:

let rec firstFunc () =
  secondFunc ()

[<CompiledName "SecondFunc">]
and secondFunc () =
  firstFunc ()
Run Code Online (Sandbox Code Playgroud)

有办法解决这个限制吗?

f#

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