奇怪的 HyLang 点符号行为

Weird HyLang dot notation behavior

为什么以下工作:

(def session (sessionmaker))
(.configure session :bind engine)

...但是 (def session (.configure (sessionmaker) :bind engine)) 导致我的 Hy 应用程序抛出 NoneType TypeError?

所以 (sessionmaker) 生成一个 "session" 对象? (.configure (sessionmaker) :bind engine) 方法是否调用 return 那个会话对象?还是只是为了副作用?我怀疑是后者,只是 returns None。您可能正在寻找 doto 形式,它允许您配置一个对象,但随后 return 将它放在最后。所以代码是

(def session (doto (sessionmaker) (.configure :bind engine)))

如果您熟悉 Python,REPL 中的 $ hy --spy 选项对于理解 Hy 的编译方式非常有用。