小编Dav*_*tti的帖子

如何使用参数记录方法?

如何使用Python的文档字符串记录带参数的方法?

编辑: PEP 257给出了这个例子:

def complex(real=0.0, imag=0.0):
    """Form a complex number.

    Keyword arguments:
    real -- the real part (default 0.0)
    imag -- the imaginary part (default 0.0)

    """
    if imag == 0.0 and real == 0.0: return complex_zero
    ...
Run Code Online (Sandbox Code Playgroud)

这是大多数Python开发人员使用的约定吗?

Keyword arguments:
<parameter name> -- Definition (default value if any)
Run Code Online (Sandbox Code Playgroud)

我期待一些更正式的东西,比如

def complex(real=0.0, imag=0.0):
    """Form a complex number.

    @param: real The real part (default 0.0)
    @param: imag The imaginary part (default 0.0)

    """
    if imag == 0.0 and real …
Run Code Online (Sandbox Code Playgroud)

python documentation documentation-generation

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

如何找出特定Boost库需要的依赖项(即其他Boost库)?

对于任何C++ Boost库,如何找出它需要哪个Boost库?

示例(不一定是一个工作示例):Boost库"test"需要Boost库"date_time".

问候,

c++ boost

12
推荐指数
2
解决办法
7972
查看次数

Java:JVM如何优化对void和empty函数的调用?

我们假设我们有以下类:

public class Message extends Object {}

public class Logger implements ILogger {
 public void log(Message m) {/*empty*/}
}
Run Code Online (Sandbox Code Playgroud)

以及以下程序:

public static void main(String args[]) {
  ILogger l = new Logger();
  l.log((Message)null); // a)
  l.log(new Message()); // b)
}
Run Code Online (Sandbox Code Playgroud)

Java编译器是否会删除语句ab?在这两种情况下(剥离或不剥离),Java编译器的决定背后的基本原理是什么?

java jvm javac

12
推荐指数
2
解决办法
2662
查看次数

如何将Android应用程序在后台运行到前台

这是场景:

AndroidManifest.xml定义了一个Activity android:launchMode="singleTask".(这意味着整个应用程序生命周期中堆栈中应该有一个活动,对吧?)

在此期间Activity.onCreate(),以编程方式创建广播接收器并监听接收SMS.即使经过Activity.onPause() 设计,接收器仍保持活动状态.

当用户完成应用程序时,他按下设备主页按钮,该按钮调用Activity.onPause()并且应用程序消失.然后设备显示Android主屏幕.

收到短信后,广播接收机接收短信并尝试通过以下方式显示活动:

Intent it = new Intent(context, Akami.class);
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_LAUNCHER);
it.setComponent(new ComponentName(context.getPackageName(), "MyActivity"));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);
Run Code Online (Sandbox Code Playgroud)

但是,活动不会显示给用户.

  • a)为什么?
  • b)将Activty带到前台的可能方法有哪些?

android android-activity

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

如何在运行时将StaticString转换为String?

在斯威夫特3,是下面的转换来创建一个正确的方式StringStaticString

let fileName : StaticString = #file
let currentFile : String = file.description
Run Code Online (Sandbox Code Playgroud)

string literals swift

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

SVG 1.1:什么是"用户单位"以及如何将用户单位转换为绝对单位(例如:毫米)?

我正在实施SVG Tiny 1.1,我无法理解"用户单元"的概念.

SVG 1.1规范将没有指定单位的每个<length>定义为"用户单位",例如"mm","cm","pt"等.

在实现接口"SVGLength"时,我遇到了4个与长度值相关的属性; value,unityType,valueInSpecifiedUnit,valueAsString.最后3个属性对我来说足够清楚了.

  1. valueInSpecifiedUnit是单位类型unitType.
  2. valueAsString等于valueInSpecifiedUnit+ unitType的字符串值.例如:"10mm"

但是,属性被称为用户单位.所以我的问题是:

  1. 什么是"用户单位"?
  2. 如何从"用户单位"转换为"绝对单位",如毫米(mm)?

问候,

implementation svg

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

如何在运行时不使用任何字符串连接将MACRO扩展为NSString?

我定义了一个宏MYMACRO.注意:该值不是有效的NSString.

#define MYMACRO is
Run Code Online (Sandbox Code Playgroud)

NSString的声明中使用

@"This MYMACRO fun"
Run Code Online (Sandbox Code Playgroud)

但是,预处理器不会扩展宏.预处理的结果是

@"This MYMACRO fun"
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现的最佳解决方案是扩展宏:

#define MYMACRO @"is"
@"This "MYMACRO@" fun"
Run Code Online (Sandbox Code Playgroud)

宏扩展如下,这是一个有效的Objective-C语法:

@"This "@"is"@" fun"
Run Code Online (Sandbox Code Playgroud)

但是,这需要在运行时进行2次串联.

所以我的问题是如何在运行时不使用任何字符串连接的情况下插入宏实例NSString?

理想情况下,我希望运行时执行@"This is fun"而不是@"This "@"is"@" fun"

macros objective-c nsstring c-preprocessor

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

是否可以使用IllegalStateException捕获所有子异常?

我想知道在这种情况下使用IllegalStateException是否是API的一个很好的设计选择.

场景: 我有一个函数,它检查XML文档是否格式良好,并带有以下签名:

public boolean isXMLDocumentWellFormed(InputStream inXMLDocument)
Run Code Online (Sandbox Code Playgroud)

此函数使用以下代码段加载XML文档:

    boolean isXMLDocWellFormed = false;

    // Setup document builder
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
            .newInstance();

    if (docBuilderFactory == null)
        throw new IllegalStateException(
                "The DocumentBuilderFactory cannot be instanciated");
    try {
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

        // Parse document
        Document doc = docBuilder.parse(inXMLDocument);

        if (doc != null)
            isXMLDocWellFormed = true;

    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        throw new IllegalStateException(e);
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        throw new …
Run Code Online (Sandbox Code Playgroud)

java api exception

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

访问C++ 98和C++ 11中的枚举值

我在"Foo"类(下面)中定义了一组枚举值.

namespace Fii
{
    class Foo 
    {
        struct Bar
        {
            enum Baz
            {
                BAZ1,
                BAZ2, 
                BAZ3
            };
        };
    };
};
Run Code Online (Sandbox Code Playgroud)

我使用结构来减少Baz枚举值的范围,并显示有一组相关的值.

我的目标是将枚举类型的值赋给变量.使用上面的类定义,可以这样做:

Fii::Foo::Bar::Baz myValue = Fii::Foo::Bar::BAZ1 (Works in both C++98 and C++11)
Run Code Online (Sandbox Code Playgroud)

但是,我觉得:

  • 乍一看,myValue似乎被初始化为Fii :: Foo :: Bar,但这只是因为枚举是一个hack来对父节点中的相关常量进行分组(在这种情况下为Bar)

为了提高准备程度,我将代码重新考虑为:

namespace Fii
{
    class Foo 
    {
        enum Baz
        {
            BAZ1,
            BAZ2, 
            BAZ3
        };
    };
};
Run Code Online (Sandbox Code Playgroud)

使用这个新的类定义,可以这样做:

Fii::Foo::Baz myValue = Fii::Foo::Baz::BAZ1 (Works in C++11 only)
Fii::Foo::Baz myValue = Fii::Foo::BAZ1 (Should work on C++98 and C++11 - …
Run Code Online (Sandbox Code Playgroud)

c++ enums c++11 c++98

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

Git:如何使现有的git轻量级标记指向另一个提交?

在测试Git存储库中,git log产生:

commit e1f972f22f9906ad62007b4e372d8dc06bc47656
Author: davidandreoletti
Date:   Sun Mar 18 11:23:09 2012 +0800
   Added 0

commit 81a07eeffc58b054d4c083a0d7c1d4aa0b0440d5
Author: davidandreoletti
Date:   Sun Mar 18 10:46:44 2012 +0800

   first commit
Run Code Online (Sandbox Code Playgroud)

并且git tag 0.0.2是一个指向commit的轻量级标记81a07eeffc58b054d4c083a0d7c1d4aa0b0440d5.所有提交都已推送到远程存储库(包含标签).

在这种情况下,如何使现有的Git"轻量级标记"指向另一个提交?即我希望标记"0.0.2"指向提交e1f972f22f9906ad62007b4e372d8dc06bc47656而不是81a07eeffc58b054d4c083a0d7c1d4aa0b0440d5

git git-tag

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