Вызов код C из Swift

К уже имеющемуся проекту на Swift можно добавить функционал на языке «С».
Для этого в Xcode создайте новый файл «*.c»

После создания файла Xcode сам предложит создать файл «моста»
Таким же образом можно создать мосты и с C ++, Objective-C.


Давайте создадим прототип функции  для кода C в файле (factorial.h):

#ifndef factorial_h
#define factorial_h

#include

long factorial(int n);

#endif /* factorial_h */

Реализуем метода в (factorial.c):

#include "factorial.h"

long factorial(int n) {
    if (n == 0 || n == 1) return 1;
    return n * factorial(n-1);
}

Далее в файле «моста» (write_to_file-Bridging-Header.h) импортируйте файл заголовка C :

#include "factorial.h"

Все! Можно использовать функцию в коде на Swift :

print("Hello \(factorial(5))!")

Оригинальная статья

IDE Atom Swift на Ubuntu

Для программирование на Swift крайне желательна подсветка синтаксиса, IDE Atom бесплатна и содержит необходимый пакет. Установим Atom на Ubuntu :

sudo add-apt-repository ppa:webupd8team/atom
sudo sudo apt-get update
sudo apt-get update
sudo apt-get install atom

Установим необходимые дополнения для Atom :
Запускаем Atom на вкладке Packages->Settings View->Install Packages в поле поиска пакета вводим Swift.
Устанавливаем language-swift и autocomplete-swift. Закрываем Atom.
Как правило программа на Swift состоит из нескольких файлов, и если пакет создан правильно то можно в папку Sources добавить еще один файл.
Пример с сайта https://swift.org/getting-started/#using-the-package-manager

  • В папке Sources создаем новый файл  Greeter.swift c содержимым :
    func sayHello(name: String) {
        print("Hello, \(name)!")
    }
  • Изменим содержимое main.swift на :
    if CommandLine.arguments.count != 2 {
        print("Usage: hello NAME")
    } else {
      let name = CommandLine.arguments[1]
      sayHello(name: name)
    }
  • Сохраняем ОБА файла Ctrl + S  в Atom
  • Открываем Terminal в Ubuntu  и переходим в папку пакета :
    cd /Hello 
  • Собираем пакет
    swift build
  • Программа приветствует пользователя его именем если при ее запуске из консоли передать его как параметр.
    Пример показывает взаимодействие много-файлового проекта на swift, когда функции main  и вспомогательные блоки разделены.
  • Запускаем программу и передаем ей параметр :
    ./.build/debug/Hello 'your name'
  • atom swift ubuntu