This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-09-10
Channels
- # beginners (151)
- # cider (41)
- # cljdoc (7)
- # cljs-dev (6)
- # clojure (92)
- # clojure-dev (5)
- # clojure-italy (26)
- # clojure-losangeles (1)
- # clojure-nl (10)
- # clojure-russia (3)
- # clojure-spec (23)
- # clojure-uk (82)
- # clojurescript (56)
- # clojutre (1)
- # core-async (3)
- # cursive (15)
- # datomic (26)
- # editors (3)
- # emacs (3)
- # events (2)
- # figwheel-main (192)
- # fulcro (66)
- # leiningen (12)
- # mount (1)
- # off-topic (131)
- # portkey (6)
- # re-frame (38)
- # reagent (10)
- # reitit (7)
- # ring-swagger (55)
- # shadow-cljs (21)
- # spacemacs (11)
- # tools-deps (48)
giorno
Ma se volessi rendere disponibile una funzione in un ns definita in un altro ns? Cioé l'utente facendo require di un ns si ritrova importate anche delle funzioni da un altro ns
@justalanm cioè, un import implicito? Quindi se importo foo
mi becco anche le funzioni di bar
?
@mdallastella yes, se importo lib.core mi importo anche le funzioni di lib.utils, un po' à la Python (capisco che non sia bellissimo, ma d'altro canto il contrario mi spingerebbe a creare ns kilometrici)
@justalanm lib.core and lib.utils sono sotto il tuo controllo? Cioe’ le hai scritte tu?
c’e’ anche l’opzione di usare (in-ns lib.core)
da dentro lib.utils (il file), un po’ come fa pprint
(vedi https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_print.clj#L9)
@justalanm in ottica di refactoring futuro non la vedo una grande scelta, ma è solo una mia opinione
(ho programmato anch'io in Python ed ho sempre trovato che "esplicito è meglio che implicito" sia cosa buona e giusta)
una delle mie solite domande niubbe... Come si fa su emacs a pulire il buffer del repl?
@mdallastella da un lato, dall'altro molti pacchetti hanno in __init__.py
: from lib1 import *
, from lib2 import *
. Se così non fosse ci sarebbero import del tipo pacchetto.modulo.sottomodulo.classe
, comunque alla fine la soluzione migliore è quello di fare una cosa più flat possibile e mettere tutto in core.clj
, alla fine 300 righe comprese doctsring non è nemmeno così male