Статьи

Четыре способа быстрого тестирования кода Swift

Как разработчики, мы  всегда  ищем лучший, более быстрый способ работы. Всякий раз, когда я изучаю новый язык, который обычно работает в среде IDE, я начинаю искать способы тестирования фрагментов кода через терминал для Mac или командную строку в Windows. Свифт не исключение. Поскольку я все больше и больше работаю с этим языком, я обнаружил четыре способа быстрого тестирования кода Swift, которые не только хороши для вашей повседневной работы, но и могут быть использованы для совместной работы и помощи другим в освоении этого нового язык.

# 1: REPL (Read-Eval-Print-Loop)

Отладчик XCode включает интерактивную версию языка Swift, известного как  REPL (Read-Eval-Print-Loop) . Это позволяет вам попробовать язык Swift в  LLDB  в консоли XCode или из терминала.

Если у вас есть хотя бы Xcode 6.1 или выше, вы можете просто открыть свой терминал и набрать:

swift

Вы также можете вызвать его с помощью следующих команд в более ранних версиях Xcode 6:

xcrun swift 
lldb --repl

Это выглядит следующим образом:

replswift

Это отлично подходит для быстрых фрагментов кода, которые вы можете попробовать без запуска Xcode.

# 2: быстрые игровые площадки

Игровые площадки Swift — это способ компилировать и запускать код Swift вживую по мере ввода текста. Результаты каждой строки представлены во временной шкале по мере их выполнения, и переменные могут быть проверены в любой точке. Игровые площадки обычно создаются в виде отдельного проекта (как показано на рисунке ниже), но они также могут быть созданы в рамках существующего проекта XCode.

xcodeplaygrounds

Есть много образцов игровых площадок, и вы можете использовать мою,  чтобы начать. Ниже вы увидите пример временной шкалы в действии, предоставляющий визуальный вид массивов, циклов и многого другого.

demoplayground

Очевидной причиной использования игровых площадок Swift является богатый редактор, который включает подсветку синтаксиса, завершение кода и многое другое. Недостатком является то, что для этого вам нужно открыть Xcode.

№ 3: Использование онлайн-редактора

SwiftStub  стал одним из самых популярных способов компилировать и запускать код Swift на лету, не требуя Mac. Все, что вам нужно, это веб-браузер, открытый для SwiftStub  и готовый к  работе .

swiftstub

Он включает в себя ожидаемые функции, такие как настраиваемые URL-адреса и загрузка или сохранение игровой площадки, но также поддерживает совместную работу в команде.

swiftstubdemo

Вы можете легко добавлять людей в ваш текущий проект Swift и даже добавлять аудио и групповой чат, если это необходимо.

# 4: Использование iTerm2 с Guard-shell

Это моя любимая среда, но она ориентирована на опытных пользователей, которые не прочь потратить несколько дополнительных минут на ее настройку. Не волнуйтесь, если вы никогда не делали этого раньше, я пошагово проведу вас через процесс.

Я предпочитаю использовать  iTerm2 . Думайте об этом как о замене приложения Terminal на Mac. По словам авторов, «iTerm2 переносит терминал в современную эпоху с функциями, о которых вы никогда не знали, что всегда хотели». Я использовал это в течение нескольких месяцев и не мог согласиться больше.

Мы также собираемся использовать помощь  Guard-shell  для автоматического запуска команд оболочки при изменении наблюдаемых файлов. В этом случае мы будем смотреть файлы с расширением .swift.

Как только вы загрузите эти приложения, вам нужно запомнить только несколько команд, чтобы начать работу…

В iTerm2 нажмите ⌘D, чтобы получить вертикальное разделение, и ⇧⌘D для горизонтального разделения.

iterm2intro

Перейдите в свой домашний каталог и введите:

vim Guardfile

Once you are inside the Guardfile, you will need to switch to “Insert” mode. Simply type the following and when you are finished press “esc” and then type :w to save the file. Type :x to save and exit vim.

source 'https://rubygems.org'
gem 'guard-shell'

You will now have a file named Gemfile and it is time to install the gem.

Simply type:

bundle install

You should then see the following:

Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using hitimes 1.2.2
Using timers 4.0.1
Using celluloid 0.16.0
Installing coderay 1.1.0
Using ffi 1.9.8
Installing formatador 0.2.5
Using rb-fsevent 0.9.4
Using rb-inotify 0.9.5
Using listen 2.9.0
Installing lumberjack 1.0.9
Installing nenv 0.2.0
Installing shellany 0.0.1
Installing notiffany 0.0.6
Installing method_source 0.8.2
Installing slop 3.6.0
Installing pry 0.10.1
Installing thor 0.19.1
Installing guard 2.12.5
Installing guard-compat 1.2.1
Installing guard-shell 0.7.1
Using bundler 1.8.5
Bundle complete! 1 Gemfile dependency, 21 gems now installed.

Now would be a good time to create a directory where you want guard-shell to be monitoring for .swift files that have changed. I created a folder called Swift, then ran the following command :

bundle exec guard init shell

A new file called Guardfile will be created in that folder.

Now type vim Guardfile, enter the following lines and save the file the same way you did before.

guard :shell do
    watch(/(.*).swift/) do |m| 
        puts
        puts
        puts
        puts "Running #{m[0]}"
        puts `swift #{m[0]}`
    end
end

Finally type:

bundle exec guard

If everything worked successfully, then Guard-shell will inform you that it is watching a folder as shown below:

itermwithguard

Switch over to your left-hand panel and make sure you are in the folder that Guard is watching and type “vim test.swift” and type the following Swift code:

var first = "hello"
var second = "world"
println("\(first) \(second)")

Use :w to save the file and see the output in the right-hand panel as shown below.

guardcompileswift

Wrap-up

Hopefully you can find a solution that works for your development process out of the four options that I presented today. I assume that, since you are interested in testing Swift code snippets, you are building Swift apps as well. You may be interested in my article on how to build a task app in Swift as well. In addition, Telerik provides several powerful UI componentsfor iOS such as Charts, Calandar, ListView and more.

Thanks for reading and sound off in the comments below with your ideal environment.