小编Tim*_*tin的帖子

为什么'True == not False'是Python中的语法错误?

将布尔值与==Python中的工作进行比较.但是当我应用布尔not运算符时,结果是语法错误:

Python 2.7 (r27:82500, Sep 16 2010, 18:02:00) 
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True == True
True
>>> False == False
True
>>> True is not False
True
>>> True == not False
  File "<stdin>", line 1
    True == not False
              ^
SyntaxError: invalid syntax
>>> 
Run Code Online (Sandbox Code Playgroud)

为什么这是语法错误?我希望not False是一个返回布尔值的表达式,并且True == <x>只要<x>是具有有效语法的表达式,它就是有效的语法.

python boolean

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

C#子类中的受保护属性是否应隐藏对父级公共属性的访问权限?

我有以下代码:

public class Parent
{
    public string MyField { get; set; }
}

public class Child : Parent
{
    protected new int MyField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我试着通过以下方式访问:

static void Main(string[] args)
{
    Child child = new Child();
    child.MyField = "something";
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2008编译时没有注释,但在Mono(2.4.2,Ubuntu)下我收到错误消息

'HideTest.Child.MyField' is inaccessible due to its protection level (CS0122)
Run Code Online (Sandbox Code Playgroud)

一个实现或其他更符合标准吗?

编辑:感谢所有指出糟糕设计的人.不幸的是,它是第三方库,并且显着地改变它是不实际的.

c# mono

29
推荐指数
3
解决办法
2480
查看次数

HttpWebRequest.GetResponse()在第二次调用时挂起

我正在尝试使用HttpWebRequest通过HTTP获取一系列文件.第一个请求通过正常,但第二次通过相同的代码GetResponse()挂起并超时.WireShark显示没有为第二个请求发送HTTP流量,因此看起来这是一个API问题.

经过一些调查,我发现它与指定内容长度有关:如果我把它留下来,那么代码工作正常.

我的代码是:

HttpWebRequest  httpWebRequest = ConfigureRequest();

using (WebResponse webResponse = httpWebRequest.GetResponse())
    // On the second iteration we never get beyond this line
{
    HttpWebResponse httpWebResponse = webResponse as HttpWebResponse;

    using (Stream webResponseStream = httpWebResponse.GetResponseStream())
    {
        if (webResponseStream != null)
        {
            // Read the stream
        }
    }

    statusCode = httpWebResponse.StatusCode;
    httpWebResponse.Close();
}
Run Code Online (Sandbox Code Playgroud)

症状似乎与这个问题这个问题非常相似,但在这两种情况下,给出的建议是处理我已经在做的WebResponse.

编辑在回应Gregory时,这里是ConfigureRequest():

private HttpWebRequest ConfigureRequest()
{
    string          sUrl            = CreateURL(bucket, key);
    HttpWebRequest  httpWebRequest  = WebRequest.Create(sUrl) as HttpWebRequest;

    httpWebRequest.AllowWriteStreamBuffering = false;
    httpWebRequest.AllowAutoRedirect = true; …
Run Code Online (Sandbox Code Playgroud)

.net c# httpwebrequest

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

是否可以在C中具有可变参数函数且没有非可变参数?

我有以下功能:

void doStuff(int unusedParameter, ...)
{
    va_list params;
    va_start(params, unusedParameter);
    /* ... */
    va_end(params);
}
Run Code Online (Sandbox Code Playgroud)

作为重构的一部分,我想删除未使用的参数,而不另行更改函数的实现.据我所知,va_start当你没有最后一个非变量参数引用时,就不可能使用它.有没有办法解决?

背景:它实际上是一个C++程序,所以我可以使用这里建议的一些运算符重载魔法,但我希望此时不必更改接口.

现有函数通过要求变量参数列表以空值终止并扫描NULL来完成其工作,因此它不需要一个前导参数来告诉它有多少参数.

在回应评论:我不具备删除未使用的参数,但我会做到这一点,如果有一个干净的方式来做到这一点.我希望有一些我想念的简单.

c variadic-functions

16
推荐指数
2
解决办法
2694
查看次数

MySQL中最右边出现的字符串匹配

我想从MySQL中包含文件名的字段中提取文件扩展名.这意味着我需要找到最终的'.' 该字段中的字符,然后提取所有内容.以下代码示例部分有效:

SELECT LCASE(RIGHT(filename, LENGTH(filename) - LOCATE('.', filename)))
  FROM mytable;
Run Code Online (Sandbox Code Playgroud)

除了它在文件名包含多个'.'的情况下,它会提取太多.在大多数编程语言中,我希望找到一个能让我最合适的函数,但是我找不到MySQL的任何这样的东西,我也找不到那些遇到同样问题并找到解决方法的人的讨论.

mysql string

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

为什么gcc报告"隐含的函数声明'轮''?

我有以下C代码:

#include <math.h>

int main(int argc, char ** argv)
{
    double mydouble = 100.0;
    double whatever = round(mydouble);

    return (int) whatever;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我收到警告:

round_test.c: In function ‘main’:
round_test.c:6: warning: implicit declaration of function ‘round’
round_test.c:6: warning: incompatible implicit declaration of built-in function ‘round’
Run Code Online (Sandbox Code Playgroud)

我对C生锈了,但我认为#include将round()的声明带入了范围.我已经检查了我的ANSI标准(C99是我唯一的副本),它确认了math.h标题中存在round()函数.我在这里错过了什么?

编辑:编译器是Ubuntu上的GCC 4.3.2(intrepid,IIRC).运行gcc -E给出:

$ gcc -E round_test.c | grep round
# 1 "round_test.c"
# 1 "round_test.c"
# 2 "round_test.c" 2
    double whatever = round(mydouble);
Run Code Online (Sandbox Code Playgroud)

所以这个定义显然没有在标题中找到.

c gcc compiler-warnings

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

如何通过反射从引用的程序集中获取类型

假设我有一个工厂方法,它想要构建一个在运行时通过反射选择的类型的实例.进一步假设我的工厂方法是通用代码,它不直接引用包含指定类型的程序集,尽管它将从具有必需程序集引用的应用程序中运行.

我如何编写可以找到这种类型的代码?如果我做以下事情

public object CreateInstance(string typeName)
{
    Type desiredType = Assembly.GetExecutingAssembly().GetType(typename);

    // Instantiate the type...
}
Run Code Online (Sandbox Code Playgroud)

这似乎失败,因为未在执行程序集中定义类型.如果我可以在运行时获得所有程序集,我可以迭代它们并找到哪一个包含我想要的类型.但我看不到这样做的方法.AppDomain.CurrentDomain.GetAssemblies()看起来很有希望,但不会返回我在项目中引用的所有程序集.

编辑:有几个人指出我需要加载程序集.麻烦的是,这段代码不知道它应该加载哪个程序集,因为我试图以不依赖于其他程序集的方式编写此代码.

我故意遗漏了细节typeName,因为从我的实际代码中实际上从字符串到类型的映射更复杂.实际上,类型由包含指定字符串的自定义属性标识,但是如果我可以获取类型列表,则将列表限制为所需类型没有问题.

c# reflection

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

MySQL LOAD DATA INFILE需要什么文件和目录权限?

我有一个脚本试图将一些数据加载到MySQL中LOAD DATA INFILE.出于某种原因,如果文件位于/tmp目录中,则它可以工作,但如果文件位于具有相同权限的另一个目录中,则不起作用.我找不到任何方法让MySQL从/tmp目录外部或数据库目录中导入数据,但我在手册中找不到任何解释为什么会出现这种情况的内容.

情况:

$ ls -l /
...
drwxrwxrwt  21 root root  4096 2010-10-19 20:02 tmp
drwxrwxrwt   2 root root  4096 2010-10-19 20:14 tmp2

$ ls -l /tmp/data.csv 
-rwxr-xr-x 1 timm timm 415431 2010-10-19 20:02 /tmp/data.csv

$ ls -l /tmp2/data.csv 
-rwxr-xr-x 1 timm timm 415431 2010-10-19 20:14 /tmp2/data.csv
Run Code Online (Sandbox Code Playgroud)

AFAICT在重要方面是相同的.但是,如果在MySQL命令行,我做:

> LOAD DATA INFILE '/tmp2/data.csv' IGNORE INTO TABLE ports
      FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ';
ERROR 29 (HY000): …
Run Code Online (Sandbox Code Playgroud)

mysql permissions load-data-infile

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

我应该如何从C++正确初始化C结构?

我在C++文件中有以下代码:

#include <sys/socket.h>

// ...
void someFunc() {
    struct msghdr msg = {0};  // <<< Uninitialized member here
}
Run Code Online (Sandbox Code Playgroud)

当我g++使用编译时-Wall -Wextra,我收到警告:

error: missing initializer for member 'msghdr::msg_namelen'
...same for several other fields
Run Code Online (Sandbox Code Playgroud)

我的问题是:我无法显式初始化所有字段,因为我不知道哪些字段将存在(跨平台)struct msghdr.该结构没有默认构造函数,因为它是一个C结构.我的印象是该= {0}表单导致所有字段的零初始化(这对我来说没问题),但g++错误消息表明没有.

我有什么选择?

c++ cross-platform initialization

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

如何在Hy中构建Python模块?

我想使用Hy,一种基于Python的Lisp方言.然而,我的同事都使用Python,不太可能很快切换到Lisp方言.

如何将Hy代码打包到标准Python模块中?

lisp python hy

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