小编pro*_*eek的帖子

在Python的方法中执行execfile()

我有一个具有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)

怎么了?怎么解决这个问题?

python configuration execfile

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

在Scala中添加不同起点的列表

我需要将一个带有索引的列表相加以指定起点.例如,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)

scala scala-collections

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

Ruby unittest错误:"你应该要求'minitest/autorun'."

我有一个非常简单的单元测试,我从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)

可能有什么问题?

ruby unit-testing

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

用D语言循环计数器

在本教程(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)

loops d

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

如何扩展结构只是在D中导入包?

我有这个斐波那契数字生成器.

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方法.这背后的机制是什么?

import d

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

是什么导致了这个 Ada 编译错误“歧义字符文字”?

我有这个 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)

代码有什么问题?

ada gnat

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

执行Python doctest代码

我有使用摘要的简单 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)

python doctest python-unittest

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

在Python中保持字典参数顺序的方法是什么?

__PRE__

在Python 2.6上运行此代码给我以下结果.

__PRE__

我需要保持参数的顺序,我的意思是,property先来,然后label直到我到routeDelay最后.

问:在Python中保持字典参数顺序的方法是什么?

python parameter-passing

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

clojure问题的联合函数

例如,(例如,联合#{}"Stu")中使用了conj(conj coll item).

但是,我在'Programming Clojure'一书第16页中找到了这个例子.

(alter visitors conj username)

我猜(conj visitor username)将是正确的用法.秘密是什么?

clojure

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

可执行jar背后的魔力?

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

问题

  • 这种方法背后的魔力是什么?什么是'clojure.lang.Script'?
  • 可以用同样的方式调用antlr吗?如果是这样的话应该使用什么名字(比如clojure.lang.Script)?
  • 用其他语言制作的jar文件怎么样:clojure/scala?我怎么知道应该叫的名字?
  • 这两种方法有什么区别?优点和缺点?

java jar

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