Рубрики
Без рубрики

Двигаясь быстрее с reft

Определение замены мотивацией и примерами. Помечено с заменой, питоном, узлом, скоростью.

Введение в замену

Разработчики любят «двигаться быстро и сломать вещи». Ну, нам нравится быстро двигаться в любом случае. «REPL» – это инструмент, который я обнаружил, что мешает мне увязнуть работать в контексте большого приложения. Конечно, в какой-то момент моя новая функция или Bugfix должны быть интегрированы в кодовую базу, но запуск там добавляет трение и замедляет меня. В этом посте вы узнаете о том, какие refts есть, и как использовать их для эффективной работы.

Reft – это печать для чтения-оценки. Эта концепция была впервые введена на языке программирования Lisp, чтобы обеспечить быстрые эксперименты в Lisp. В Lisp следующее является реализацией базовой репреки:

(loop (print (eval (read))))

Чтение команд из наизнанку OUT (именно то, как они выполняются в Lisp), вы можете увидеть, где reft получает свое имя!

Вообще говоря, вы вызываете all из командной строки. Когда вы запускаете reft, это приведет вас к новому интерфейсу, аналогично командной строке, но ваши инструкции интерпретируются на языке REFL. На самом деле, Вы можете подумать о командной строке в качествеменах для Bash Отказ Один раз в REPL вы можете запустить команды, определить переменные, функции записи и т. Д. И см. Результаты.

Примеры: Python и узел

Как Python, и узел поставляются с довольно сложными заменами, когда вы их устанавливаете. Вот несколько примеров, которые вы можете попробовать!

Питон

Запустите Python REPL, набрав Python3. В вашей командной строке (в этом случае user @ comp ~ $ ) и нажав ввод. Это распечатает некоторую информацию о вашем Python Установка и оставьте вас в подсказке reft ( >>> ):

user@comp ~$ python3
Python 3.6.1 (default, Apr  4 2017, 09:36:47) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Отсюда вы можете выполнять вычисления, определять переменные и функции и т. Д.:

>>> 1+1
2
>>> greeting = 'hello world'
>>> print(greeting)
hello world
>>> def print_greeting(greeting):
...     print(greeting)
... 
>>> print_greeting('hello world')
hello world
>>> print_greeting('hello function')
hello function

Выход с ^ D. (Ctrl + D)

>>> ^d
user@comp ~$

Узел

Введите UDE REPL

user@comp ~$ node
> 

Как и в Python, вы можете выполнять вычисления, определять переменные и функции и т. Д.

> 1+1
2
> const greeting = 'hello world';
undefined
> console.log(greeting);
hello world
undefined
> const printGreeting = (greeting) => console.log(greeting);
undefined
> printGreeting('hello world');
hello world
undefined
> printGreeting('hello function');
hello function
undefined

Выход с ^ D. (Ctrl + D)

> ^d
user@comp ~$

undefined Это посевы в примере узла является возвращаемое значение каждого утверждения. Если ваше утверждение имеет определенное возвращаемое значение, которое будет напечатано вместо этого, как в 1 + 1 пример. Также обратите внимание, что эти замены имеют историю команды, поэтому вы можете нажать «UP» для просмотра прошлых команд, даже между сеансами.

Реализация

Reft как любая программа, которую вы запускаете из вашей командной строки. Когда вы запустите его, он дает некоторое вывод, а затем ожидает ввода пользователя. Когда заявление введено, он оценивает оператор и распечатывает результат. В виде Python и Node есть встроенные модули, которые могут предоставить замену с некоторым инъекционным «контекстом». Вы можете прочитать @rpalo Отличный пост здесь Для того, как использовать библиотеку Python Код создать свою собственную репре. Вот как это сделать в узле:

// include the repl library
const repl = require('repl');

// start it up, with the desired prompt string
const r = repl.start('> ');

// inject a couple pieces of context
r.context.text = 'This is some text';
r.context.greet = (name) => console.log(`hello ${name}`);

Мы можем сохранить это как my_repl.js а затем запустить его и использовать его следующим образом (обратите внимание, что текст и приветствовать уже определены для вас, потому что они были введены в контекст):

user@comp ~$ node my_repl.js 
>
> 1+1
2
> text
'This is some text'
> greet('Jon')
hello Jon
undefined
> const greetAndCompliment = (name) => {
...   greet(name);
...   console.log('nice code');
... }
undefined
> greetAndCompliment('Jon')
hello Jon
nice code
undefined
> 

Повседневное использование

Я нахожу RECESS, наиболее полезные при попытке простого эксперимента. Например, вместо создания test.py Скрипт, чтобы подтвердить, что параметры по умолчанию работают так, как я думаю, что они делают, я могу просто выстрелить реверс и подтвердить:

>>> def print_greeting(greeting='hello world'):
...     print(greeting)
... 
>>> print_greeting()
hello world
>>> print_greeting('hello overridden default')
hello overridden default

Заворачивать

Теперь, когда вы узнали обменах, вы также можете быть заинтересованы в Агрегаты тесты и Тестовое развитие или TDD. Они повышают скорость разработчика аналогичным образом, сокращая время цикла. У них есть дополнительное преимущество увеличения качества кода. Для дальнейшего чтения и замены, проверьте Страница Википедии или repl.it Отказ

Спасибо за прочтение!

Оригинал: “https://dev.to/joncassdev/moving-faster-with-repl–hk0”