Hello, I am gearing up to write some swing code, specifically some
stuff where I want to use the grid bag layout system, and I remember
something I hated about java:
--c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 0;
--
You repeated c all over the place so you didn't dare name it something
reasonable.
I noticed in some closure code this looks about the same (actually
worse):
(set! (.fill c) GridBagConstraints/HORIZONTAL)
(set! (.anchor c) GridBagConstraints/PAGE_END)
(set! (.weightx c) 1.0)
(set! (.weighty c) 1.0)
So I decided to do something about it:
user> c
#<GridBagConstraints java.awt.gridbagconstrai...@f01381>
user> (defmacro sets! [vars & rest] `(do ~@(map (fn [flds] `(set! (.
~vars ~(first flds)) ~(second flds))) rest)))
nil
user> (macroexpand '(sets! c (fill GridBagConstraints/HORIZONTAL)
(weightx 1.0)))
(do (set! (. c fill) GridBagConstraints/HORIZONTAL) (set! (. c
weightx) 1.0))
user> (sets! c (fill GridBagConstraints/VERTICAL) (weightx 1.0))
1.0
user> (. c fill)
2
user> (sets! c (fill GridBagConstraints/VERTICAL) (weightx 1.0))
1.0
user> (. c fill)
3
user>
Is this a good idea or did I do something ridiculous? I am a clojure
newb, so please feel free to be quite explicit.
Chris
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---