如何使用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) 对于任何C++ Boost库,如何找出它需要哪个Boost库?
示例(不一定是一个工作示例):Boost库"test"需要Boost库"date_time".
问候,
我们假设我们有以下类:
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编译器是否会删除语句a和b?在这两种情况下(剥离或不剥离),Java编译器的决定背后的基本原理是什么?
这是场景:
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)
但是,活动不会显示给用户.
在斯威夫特3,是下面的转换来创建一个正确的方式String
从StaticString
?
let fileName : StaticString = #file
let currentFile : String = file.description
Run Code Online (Sandbox Code Playgroud) 我正在实施SVG Tiny 1.1,我无法理解"用户单元"的概念.
SVG 1.1规范将没有指定单位的每个<length>定义为"用户单位",例如"mm","cm","pt"等.
在实现接口"SVGLength"时,我遇到了4个与长度值相关的属性; value
,unityType
,valueInSpecifiedUnit
,valueAsString
.最后3个属性对我来说足够清楚了.
valueInSpecifiedUnit
是单位类型unitType
.valueAsString
等于valueInSpecifiedUnit
+ unitType
的字符串值.例如:"10mm"但是,属性值被称为用户单位.所以我的问题是:
问候,
我定义了一个宏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"
我想知道在这种情况下使用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) 我在"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)
但是,我觉得:
为了提高准备程度,我将代码重新考虑为:
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) 在测试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