奇怪的HyLang点符号行为

时间:2017-06-30 16:10:16

标签: hy

为什么以下工作:

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

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

1 个答案:

答案 0 :(得分:2)

那么(sessionmaker)会成为“会话”对象吗? (.configure (sessionmaker) :bind engine)方法调用是否返回该会话对象?还是只是为了副作用?我怀疑它是后者,只返回None。您可能正在寻找doto表单,它允许您配置对象,但最后会返回它。所以代码将是

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

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