2015-01-21 6 views
7

Sto provando a scrivere uno script con Swift (non un progetto Xcode). Per essere chiari, la prima linea del mio file èC'è un modo per avere uno script Swift usare più file

#!/usr/bin/swift 

E io sono solo chiamando dalla linea di comando.

Tuttavia, non riesco a capire come utilizzare lo script in un altro file .swift. Non lo raccoglie dalla stessa directory e non c'è modo di vedere import.

È supportato?

+1

domanda correlata qui http://stackoverflow.com/questions/27872589/swift-repl-how-to-import-load-evaluate-or-require-a -SWIFT-file. - Suppongo * che non sia ancora possibile. –

+0

Suppongo che debba essere possibile poiché XCode può farlo (passando i parametri corretti al compilatore). Ma ovviamente nessuno l'ha capito finora. Ad esempio, in Playground puoi includere più file (c'è una risposta da qualche parte su SO). Ma di nuovo questo è all'interno di XCode. –

+0

Se volessi compilare, potrei farlo con 'swiftc -o ./myscript main.swift b.swift' - che potrebbe essere l'unica soluzione (posso scrivere una bash intorno ad esso - ugh) –

risposta

3

mia soluzione attuale è un semplice script di shell che concatena tutti i file in un unico ed esegue il file concatenati:

TMPFILE=`mktemp /tmp/Project.swift.XXXXXX` || exit 1 
trap "rm -f $TMPFILE" EXIT 
cat *.swift > $TMPFILE 
swift $TMPFILE 
13

io uso una variante della soluzione di Marián:

cat A.swift B.swift main.swift | swift - 
+1

... Uno dovrebbe averlo provato! +1 –

0

Quello che trovo interessante è che, anche come linguaggio compilato, qualsiasi classe personalizzata deve essere definita sopra qualsiasi utilizzo di quella classe. Ad esempio, nella soluzione sopra, se "B.swift" utilizza una classe definita in "A.swift", devi prima cat "A.swift". Questa è stata la mia esperienza in esecuzione dalla riga di comando, in ogni caso

Problemi correlati