小编swi*_*ard的帖子

习惯性的无操作/"通过"

什么是(大多数)惯用的Clojure表示no-op?也就是说,

(def r (ref {}))
...
(let [der @r]
    (match [(:a der) (:b der)]
        [nil nil] (do (fill-in-a) (fill-in-b))
        [_ nil] (fill-in-b)
        [nil _] (fill-in-a)
        [_ _] ????))
Run Code Online (Sandbox Code Playgroud)

Python有pass.我应该在Clojure中使用什么?

ETA:我主要是因为我遇到过cond没有提供任何导致错误的地方(例如).我意识到"大多数"时间,相当于pass不需要,但是当它出现时,我想知道什么是最具有Clojuric的.

clojure

7
推荐指数
3
解决办法
4058
查看次数

no-op /明确无所事事

我有一个类型方法,可以改变类型的字段.它不需要参数,也不会返回任何参数 该方法的大部分是一个switch块.我希望能够通过无操作"短路"出switch块.在我将它重构为类型方法之前,我只是退出了函数,但那就是了.删除案例会破坏方法的逻辑 - default案例会改变状态,如果这种情况匹配,我不想这样做.pass基本上我需要相当于Python的.

码:

func (parser *Parser) endSectionName () {
    state = parser.State
    buffer = parser.buffer
    results = parser.results
    switch {
        case state.HasFlag(IN_ESCAPED) {
            // ???
        }
        case !inSection(state) {
            return state, NotInSectionError
        }
        case !state.HasFlag(IN_SECTION_NAME) {
            state.Reset()
            return state, errors.New("Parsing error: Not in section name")
        }
        default {
            state.RemoveFlag(IN_SECTION_NAME)
            s := buffer.String()
            results[s] = new(Section)
            buffer.Reset()
            return state, nil
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

go

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

unittesting sqlalchemy BinaryExpressions

我正在为一些使用SQLAlchemy的代码编写一些单元测试.我想测试filter调用,但似乎BinaryExpression使用相同参数创建的SQLAlchemy 对象不能比较相等:

AssertionError: Expected call: filter(<sqlalchemy.sql.elements.BinaryExpression object at 0x1037607d0>)
Actual call: filter(<sqlalchemy.sql.elements.BinaryExpression object at 0x1037590d0>)
Run Code Online (Sandbox Code Playgroud)

我想我可以将它们都转换为字符串并进行比较,但这看起来很糟糕,而且如果我不需要,我真的不会被迫尝试调试字符串比较.是否有更好/更结构化的方法来比较单位测试中的BinaryExpressions?

python sqlalchemy mocking python-unittest

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

共享 txpostgres 连接池

我们有一个 RESTful(-ish)扭曲的应用程序,它使用 txpostgres 来访问 postgres 数据库。txpostgres.Connection目前,每次客户端 ping 服务器进行数据库调用时,我们都会生成新实例。这是低效的,会导致我们的数据库很快就不堪重负。我一直在尝试改用它来代替使用txpostgres.ConnectionPool,但遇到了麻烦。现在我有一些看起来像这样的东西:

class DBTester(object):
    def __init__(self):
        self.cfg = load_config('local')  # load the db settings from a JSON file
        self.pool = ConnectionPool(None, min=1, **self.cfg) # create the pool

    @defer.inlineCallbacks
    def get_pool(self):
        yield self.pool.start()
        defer.returnValue(self.pool)


class DBT(object):
    def __init__(self):
        self.db = DBTester()

    @defer.inlineCallbacks
    def t(self):
        conn = yield self.db.get_pool()
        res = yield conn.runQuery('select * from clients')
        println('DBT.t result: {}'.format(res))


if __name__ == "__main__":
    dbt = DBT()
    dbt.t()
    dbt.t()

    reactor.run()
Run Code Online (Sandbox Code Playgroud)

问题在于pool.start()通话的时间。如果我把它放进去 …

python postgresql psycopg2 twisted

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