codigo - código swift o aba
¿Cómo incluir el archivo.swift de otro archivo.swift en un modo inmediato? (2)
Tener un archivo con la función de definición de bar.swift
. bar.swift
:
func bar() {
println("bar")
}
Y un script para ejecutarse en modo inmediato foo.swift
:
#!/usr/bin/xcrun swift -i
bar()
¿Cómo se importa la bar.swift
bar()
de foo.swift
desde foo.swift
?
Creo que la respuesta ahora mismo es que no puede dividir el código en varios archivos a menos que compile el código. La ejecución con #!/usr/bin/swift
solo es posible para scripts de un solo archivo.
Obviamente, es una buena idea presentar una solicitud de mejora en http://bugreport.apple.com/ , pero mientras tanto, tendrá que compilar el código antes de ejecutarlo.
Además, su archivo foo.swift
no puede tener ese nombre, debe cambiarle el nombre a main.swift
. Si hay varios archivos que se están cumpliendo, solo main.swift
puede tener código en el nivel superior.
Entonces, tienes estos dos archivos:
cambio principal
bar()
bar.swift:
func bar() {
println("bar")
}
Y compilar / ejecutar el código con:
$ swiftc main.swift bar.swift -o foobar
$ ./foobar
bar
Si todos sus archivos swift están en el mismo directorio, podría acortar el comando de compilación:
$ swiftc *.swift -o foobar
O si quieres buscar directorios secundarios:
$ find . -iname ''*.swift'' | xargs swiftc -o foobar
Escribe un script de bash para concatenar los archivos. La secuencia de comandos que se muestra a continuación hace que el archivo de la biblioteca quede al frente de la secuencia de comandos antes de la ejecución:
#!/bin/bash
cat $HOME/my_swift/my_library_to_add.swift $1.swift > t.swift
swift t.swift
Como el archivo resultante es de un solo uso, puede colocarlo en la unidad de RAM. Aquí está la versión más avanzada que crea o reutiliza la pequeña unidad de RAM de 1 Mb, según sea necesario.
if [ ! -d /Volumes/swift_buffer ]; then
diskutil erasevolume HFS+ ''swift_buffer'' `hdiutil attach -nomount ram://2048`
fi
cat $HOME/my_swift/my_library_to_add.swift $1.swift > /Volumes/swift_buffer/t.swift
swift /Volumes/swift_buffer/t.swift
Esto crea una unidad de memoria RAM pequeña con la capacidad de 1 Mb solamente, lo suficientemente grande para cualquier script de utilidad y una biblioteca simple.
La unidad RAM montada estará visible en el Finder, desde donde se puede expulsar. No lo dispongo directamente en el script ya que la asignación lleva tiempo.