情况如下:
CL-USER> [bookid]
#<CLSQL-SYS:SQL-IDENT-ATTRIBUTE BOOKID>
CL-USER> (sql-expression :attribute 'bookid)
#<CLSQL-SYS:SQL-IDENT-ATTRIBUTE BOOKID>
CL-USER> [books.bookid]
#<CLSQL-SYS:SQL-IDENT-ATTRIBUTE BOOKS.BOOKID>
CL-USER> (sql-expression :attribute 'books.bookid)
#<CLSQL-SYS:SQL-IDENT-ATTRIBUTE "books.bookid">
Clsql 的 [] reader 宏的行为与 sql-expression 不同。我宁愿在宏中使用 sql-expression,因为 reader 宏可能会在那里表现得很奇怪。我尝试了macroexpand-1,但我猜它没有足够早地捕捉到扩展。如何探索阅读器宏的工作原理?
编辑:为我的 clsql 问题找到了解决方案:
(sql-expression :table 'books :attribute 'bookid)
我仍然想知道读取宏的事情。