我有一个具有PREAMBLE信息的config.py脚本.我可以使用execfile()函数来读取配置文件的内容.
execfile("config.py")
print PREAMBLE
>>> "ABC"
Run Code Online (Sandbox Code Playgroud)
但是,当在方法中调用execfile()时,我有一个错误.
def a():
execfile("config.py")
print PREAMBLE
a()
>>> NameError: "global name 'PREAMBLE' is not defined"
Run Code Online (Sandbox Code Playgroud)
怎么了?怎么解决这个问题?
我需要将一个带有索引的列表相加以指定起点.例如,sum(1, List(1,2,3))应该返回2 + 3第一个参数1指定起始值List(1) == 2.同样,sum(2, List(1,2,3))将返回3.
我有这个功能的代码,但我觉得它过于复杂.是否有更简单的实施?
def sum (index:Int, bits:List[Int]) = {
((bits zipWithIndex).filter { case (v, i) => i >= index}).unzip._1.sum
}
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的单元测试,我从http://en.wikibooks.org/wiki/Ruby_Programming/Unit_testing复制.
require_relative "simple_number"
require "test/unit"
class TestSimpleNumber < Test::Unit::TestCase
def test_simple
assert_equal(4, SimpleNumber.new(2).add(2) )
assert_equal(6, SimpleNumber.new(2).multiply(3) )
end
end
Run Code Online (Sandbox Code Playgroud)
执行此代码会导致错误:
Warning: you should require 'minitest/autorun' instead.
Warning: or add 'gem "minitest"' before 'require "minitest/autorun"'
From:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/test/unit.rb:3:in `<top (required)>'
tc_simple_number.rb:5:in `<main>'
MiniTest::Unit::TestCase is now Minitest::Test. From /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/test/unit/testcase.rb:8:in `<module:Unit>'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/test/unit.rb:670:in `<class:Runner>': undefined method `_run_suite' for class `Test::Unit::Runner' (NameError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/test/unit.rb:255:in `<module:Unit>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/test/unit.rb:9:in `<module:Test>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/test/unit.rb:8:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from tc_simple_number.rb:5:in `<main>'
Run Code Online (Sandbox Code Playgroud)
可能有什么问题?
在本教程(http://ddili.org/ders/d.en/foreach_opapply.html)中,If foreach support is provided by range member functions, then a loop counter can be achieved simply by enumerate from the std.range module:通过示例对其进行了评论.
import std.range;
// ...
foreach (i, element; NumberRange(42, 47).enumerate) {
writefln("%s: %s", i, element);
}
Run Code Online (Sandbox Code Playgroud)
我试着用这个例子检查一下enumerate,但是我收到了错误Error: no property 'enumerate' for type 'NumberRange'.可能有什么问题?
import std.stdio;
import std.range;
void main()
{
foreach (i, element; iota(42, 47).enumerate) {
writefln("%s: %s", i, element);
}
}
Run Code Online (Sandbox Code Playgroud) 我有这个斐波那契数字生成器.
struct FibonacciSeries
{
int first = 0;
int second = 1;
enum empty = false;
@property int front() const
{
return first;
}
void popFront()
{
int third = first + second;
first = second;
second = third;
}
@property FibonacciSeries save() const
{
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
这个结构没有这个take方法,所以我在执行这个命令时遇到这个错误(writeln(FibonacciSeries().take(5))).
a.d(66): Error: no property 'take' for type 'FibonacciSeries'
Run Code Online (Sandbox Code Playgroud)
但是,通过导入range包,它有take方法.这背后的机制是什么?
我有这个 Ada 代码。
with Ada.Text_IO;
use Ada.Text_IO;
procedure for_Loop is
begin
for Counter in 'A'..'Z' loop
Put(Counter);
end loop;
New_Line;
end for_Loop;
Run Code Online (Sandbox Code Playgroud)
Ada 编译器 (gnatmake) 输出这些错误消息。
gcc -c for_loop.adb
for_loop.adb:6:24: ambiguous character literal
for_loop.adb:6:24: possible interpretation: Character
for_loop.adb:6:24: possible interpretation: Wide_Character
for_loop.adb:6:24: possible interpretation: Wide_Wide_Character
gnatmake: "for_loop.adb" compilation error
Run Code Online (Sandbox Code Playgroud)
代码有什么问题?
我有使用摘要的简单 Python 代码
#!/usr/bin/python
# http://stackoverflow.com/questions/2708178/python-using-doctests-for-classes
class Test:
def __init__(self, number):
self._number=number
def multiply_by_2(self):
"""
>>> t.multiply_by_2()
4
"""
return self._number*2
if __name__ == "__main__":
import doctest
doctest.testmod(extraglobs={'t': Test(2)})
Run Code Online (Sandbox Code Playgroud)
我可以将它与 python 解释器一起使用:
> python simple.py
Run Code Online (Sandbox Code Playgroud)
但是,当我从 doctest 模块执行代码时,出现以下错误:
> python -m doctest simple.py
**********************************************************************
File "simple.py", line 10, in simple.Test.multiply_by_2
Failed example:
t.multiply_by_2()
Exception raised:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/doctest.py", line 1289, in __run
compileflags, 1) in test.globs
File "<doctest simple.Test.multiply_by_2[0]>", line 1, in <module>
t.multiply_by_2()
NameError: name …Run Code Online (Sandbox Code Playgroud) __PRE__
在Python 2.6上运行此代码给我以下结果.
__PRE__
我需要保持参数的顺序,我的意思是,property先来,然后label直到我到routeDelay最后.
问:在Python中保持字典参数顺序的方法是什么?
例如,(例如,联合#{}"Stu")中使用了conj(conj coll item).
但是,我在'Programming Clojure'一书第16页中找到了这个例子.
(alter visitors conj username)
我猜(conj visitor username)将是正确的用法.秘密是什么?
Jar是一种使用java的便捷方式,因为每个类都可以包含在一个jar中.
我使用如下的antlr,并使用-jar选项调用jar.
java -jar $ANTLRDIR/antlr-3.2.jar ANTLR_CODE.g
而且,这是调用clojure的命令.而不是使用-jar选项调用clojure.jar.它位于-cp中,并调用一些"函数".
java -cp $CLOJURE_JAR:$CLASSPATH clojure.lang.Script CLOJURE_CODE.clj