我正在编写一个应该与python2和python3一起使用的程序.为此,我想有一个函数写入stderr,它适用于两个python版本.
理想我认为会是这样的:
def writeStdErr(message):
if sys.version_info >= (3, 0):
print(message, end = "", file = sys.stderr)
else:
sys.stderr.write(message)
Run Code Online (Sandbox Code Playgroud)
python2的问题是,打印不是函数,所以我得到了
print(message, end = "", file = sys.stderr)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我可以通过添加eval来摆脱这个:
def writeStdErr(message):
if sys.version_info >= (3, 0):
eval('print(message, end = "", file = sys.stderr)')
else:
sys.stderr.write(message)
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢这个解决方案; 我认为使用eval一般是个坏主意.
有谁知道更好/有更好的解决方案?
编辑:
对于将来遇到同样问题的人,以下事情似乎有效:
def writeStdErr(message):
sys.stderr.write(message)
Run Code Online (Sandbox Code Playgroud)
要么
from __future__ import print_function
import sys
def writeStdErr(message):
print(message, file=sys.stderr)
Run Code Online (Sandbox Code Playgroud)
感谢所有答案
我想知道是否可以访问外部信息 - 比如编译期间的当前日期.
然后可以做这样的事情:
class MyInfo {
private var buildDate:Int = --- AUTOMATICALLY INSERT THE CURRENT UNIX DATE TIME HERE ---;
public function getInfo():String { // example usage
return "This library was compiled the " + buildDate;
}
}
Run Code Online (Sandbox Code Playgroud)
我考虑在编译bat/sh/make文件中访问此信息,然后将其传递给编译器.(类似于"-D"的东西.)但是,Haxe编译器似乎不支持如下参数:
haxe --main MyInfo --js test.js -SOMEARG date=$(date)
Run Code Online (Sandbox Code Playgroud)
这样我以后就可以使用变量日期的内容......
我编辑了build.prop,现在我的手机无法启动.我使用adb拉了build.prop,现在我有了正确的build.prop文件
我需要的是使用adb推送build.prop.
首先尝试:只读文件系统

当我挂载系统时:
第二次尝试:Permision拒绝

我能做什么?
假设我有一个这样的单元测试:
import haxe.unit.TestRunner;
import haxe.unit.TestCase;
class MyTests extends haxe.unit.TestCase {
public function testSomething():Void {
// ...
}
public function testSomethingElse():Void {
// ...
}
public static function main():Void {
var tr = new TestRunner();
tr.add(new MyTests());
tr.run();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在运行测试之后,我想分析我的代码的哪些行经过了测试,哪些没有经过测试(代码覆盖率)...或者至少查看在测试运行期间执行了某个类的哪些函数(只是为了防止出现这种情况)我没有忘记测试任何功能)。我怎样才能做到这一点?
我知道,我可以做点什么
public static function getTarget():String {
#if flash
return "Flash";
#elseif java
return "Java";
//... some more elseif clauses ...
#end
}
Run Code Online (Sandbox Code Playgroud)
为了检测haxe中的目标语言(请参阅http://old.haxe.org/doc/snip/gettarget).然而,每当社区添加新的目标编程语言(好吧,这不是那么频繁)时 - 我需要添加另一个elseif子句以"支持/检测"该语言......
所以我想知道,如果有某种预定义的宏/函数,它将目标语言作为字符串返回:
trace("This is a " + getTargetLanguage() + " program!");
Run Code Online (Sandbox Code Playgroud) 在haxe中有某种退出声明吗?喜欢
import sys
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
在Python或
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
在Java?
PS:只需要这个sys目标......
这个问题与这些问题基本相同
但是有没有办法在Haxe的sys目标平台上执行相同的操作,而无需运行ls/ dirvia sys.io.Process和解析结果?
为我的计算机科学课做一个作业,并不能完全弄清楚我做错了什么.我必须编写一个程序,将所有方块添加到1到100之间(1,4,9,16,25,36,49,64,81,100)作为赋值的一部分,我需要使用"while "声明,所以没有"for"声明会有所帮助.我目前的代码如下.
import java.util.Scanner;
public class While42B {
public static void main(String []args ) {
Scanner reader = new Scanner(System.in);
int n = 1;
int sum = 0;
while (n <= 100) {
n = (n*n);
n++;
sum = (sum + n);
}
System.out.println(sum);
}
}
Run Code Online (Sandbox Code Playgroud)
我从GUI获得的回报是
710
非常感谢任何帮助,谢谢!
HashSet在Haxe中是否有预定义的类,类似于
s = set()
Run Code Online (Sandbox Code Playgroud)
在Python或
import java.util.HashSet;
Run Code Online (Sandbox Code Playgroud)
在Java?
我知道,我可以简单地使用haxe.ds.HashMap以便快速实现这样的一套,但是我很好奇我是否真的需要这样做...
为了练习Haskell,我实现了Fermat的分解方法(参见https://en.wikipedia.org/wiki/Fermat%27s_factorization_method).但是,当我运行我的程序时,Haskell一直告诉我:
$ ./fermat 7
fermat: <<loop>>
Run Code Online (Sandbox Code Playgroud)
所以看来,我的代码中存在无限循环(cmp.http ://www.haskell.org/pipermail/haskell-cafe/2013-June/108826.html).任何人都可以给我一个提示,我做错了什么?
另外我想扩展一下如何调试Haskell代码的问题?有关如何调试此特定异常的提示.
import Data.List
import System.Environment
import Debug.Trace
isQuad :: Integer -> Bool
isQuad x = a == b
where
a = ceiling $ s
b = floor $ s
s = sqrt (fromIntegral x :: Double)
test :: Integer -> Integer -> Integer -> Bool
test nr n s = trace(show nr ++ " " ++ show n ++ " " ++ show s)
isQuad( …Run Code Online (Sandbox Code Playgroud)