是否可以在clojure中将方法继承到不同的命名空间?

Loc*_*rde 4 namespaces clojure

我希望能够通过在其他地方包含一个命名空间来访问多个命名空间中的多个函数.

例如,假设我有vehicles.clj,car.clj,bike.clj,和handler.clj.

我希望能够"继承"或包括所有的方法car.clj,并bike.cljvehicles.clj这样我就可以userequire在汽车和bike.cljs我handler.clj命名空间(或任何其他命名空间)和通话功能vehicles.clj.

与C#中的父类和子类不同.这可能吗?

我需要这样的原因是因为我已经分手了许多功能整合到不同的文件,以保持关注分离,但我想也希望能够只包括主文件(比如,vehicles.clj(:use [myproject.vehicles])在任何其他命名空间/文件并调用所有这些类中的函数.

有一个更好的方法吗?

谢谢.

Ray*_*yne 5

https://github.com/ztellman/potemkin有这样做的工具,但我强烈建议你不要这样做.这种事情很容易使代码难以理解,并且很容易将看似改进的组织变成意大利面条的噩梦.

请谨慎使用,但请注意,让自己更轻松并不总是意味着您正在改进代码!

  • 完全同意.这会破坏事物的地方之一就是当你有"跳到源头"的工具时,它会走到错误的地方.我发现一般来说,它只是让找到我正在调用的函数的实际代码变得更加复杂. (2认同)