Пропустить к содержанию
Руководство Varlig
Главная страница Varlig

Как написать строку вычисления

Здесь описаны основы блоков вычислений: разбор строк, пояснения рядом с формулами, имена значений и их повторное использование, а также условия. Начните с этого раздела, если только знакомитесь с вычислениями Varlig, и возвращайтесь, когда имя или комментарий ведёт себя неожиданно.

Одно выражение на строку

Вычисления располагаются в специальном блоке внутри заметки. Введите ограждение ```calc или нажмите ⌘Y, чтобы вставить блок. Каждая его строка — отдельное вычисление с результатом сбоку.

calc
£3.40 * 5 даёт £17.00
45 min + 1 hour 20 min даёт 2 hours 5 min
1.5 litres in ml даёт 1,500 mL

Пустые строки и комментарии не имеют результата. Ими можно разделять блок и пояснять расчёт.

Сначала Varlig пытается вычислить строку целиком, включая выражения вроде £45 with 20% VAT. Если это не удаётся, незнакомые слова пропускаются: 5 apples + 3 oranges всё ещё равно 8. Это удобно для быстрых записей, но описание может совпасть с выражением или единицей. Для пояснения назначения строки используйте комментарий или метку, описанные ниже. Подробнее — Как Varlig читает выражения.

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

calc
rent = £1,150
rnt + £200 даёт Unsupported: unrecognized calculation at "rnt"; did you mean "rent"?

То же относится к именам с цифрами и подчёркиваниями, например rent2 и rent_2. Они не отбрасываются как описание и не превращаются в содержащуюся в них цифру. Скобки, вызов функции и перевод единиц тоже не скрывают ошибку. Цифры допустимы в метке — поместите описание туда:

calc
rent = £1,150
rent2 + £200 даёт Unsupported: unrecognized calculation at "rent2"; did you mean "rent"?
(rnt + £200) * 2 даёт Unsupported: unrecognized calculation at "rnt"; did you mean "rent"?
Flat 2: rent + £200 даёт £1,350.00

Строки с маркером списка

Маркер в начале строки обозначает пункт списка покупок: описание перед суммой пропускается, и строка вычисляется. Используйте -, *, •, +, – или — с пробелом:

calc
- flowers 1,200 даёт 1,200
* coffee $4.50 даёт $4.50
- 12 mugs даёт 12
- 6 bananas @ 18p даёт £1.08
- 500g pasta 3 packs at £1.10 each даёт £3.30

Дефис перед отдельной величиной остаётся минусом: - 1,200 равно -1,200, а - 12 kg равно -12 kg. Для измерений в списке начинайте строку с * или •: они считаются маркерами перед любым содержимым.

Слова рядом с суммой

Описание делает строку понятнее, не меняя число. Слова, соединённые через +, & или per, остаются частью описания, а не вычислением. Минус вплотную к сумме относится к ней, а номер после слова не участвует в расчёте:

calc
basin + pedestal £145 даёт £145.00
food cost per head £14.20 даёт £14.20
milk, bread, eggs £12.40 даёт £12.40
Netflix -£10.99 даёт -£10.99
DIRECT DEBIT REF 4471 £62.40 даёт £62.40
Invoice #123: £250 даёт £250.00
double cream 600 mL даёт 600 mL
chlorine 3 ppm даёт 3 ppm
t-shirt £12 даёт £12.00
on the day 60 at £28 даёт £1,680.00

Это охватывает большинство строк из выписок, подтверждений заказов и списков деталей: прописной текст, перечисления через запятую, слова с дефисами и описания, начинающиеся с известных Varlig слов вроде double, per или on the day.

Подпись с номером, например Year 2, Room 12 или ISA 2026, а также период с годом вроде Q4 2026, July 2026 или week 40 2027 тоже относится к описанию, где бы она ни стояла, если за ней следует величина. Это сумма с валютой, единицей или знаком процента либо отдельное число перед следующим оператором. Номер подписи никогда не прибавляется:

calc
Year 1 £5,000 + Year 2 £6,000 даёт £11,000.00
Year 1 5,000 + Year 2 6,000 даёт 11,000
ISA 2025 £20,000 + ISA 2026 £20,000 даёт £40,000.00
Room 12 £40 + Room 14 £50 даёт £90.00
Q3 2026 £5,000 + Q4 2026 £6,000 даёт £11,000.00
July 2026 £500 + August 2026 £600 даёт £1,100.00

Единственное число после слова считается величиной, как в rent 1200 + 300; количество по-прежнему учитывается, как в tickets 2 £40 each. Единицы hour, week и day измеряют число перед ними. Перед числом они подписывают строку: hour 2 — второй час, а не час и две минуты. Если далее идут валюта, единица или процент, пробел после номера подписи начинает величину: Week 2 150 hours означает 150 часов, а не 2 150:

calc
hour 1 £40 + hour 2 £50 даёт £90.00
hours 8 + hours 7 даёт 15
Week 2 150 hours + Week 3 160 hours даёт 310 hours

Комментарии

Комментарий — текст, который калькулятор игнорирует. Его можно записать четырьмя способами:

Форма Пример Что игнорируется
Комментарий с решёткой rent * 12 # per year или # Budget Всё от # с пробелом до конца строки
Комментарий с косыми чертами rent * 12 // per year Всё от // до конца строки
Примечание в кавычках "flat whites" £3.40 * 5 Всё внутри двойных кавычек в любом месте строки
Примечание в скобках $999 (for iPhone 16) Слова в скобках в любом месте строки
calc
# Weekly shop
milk = £1.45
bread = £1.20 // sourdough
eggs = £2.30 "free range"
milk + bread + eggs # without the extras даёт £4.95

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

calc
$999 (for iPhone 16) даёт $999.00
laptop £899 (refurbished) + £49 case даёт £948.00
Boing "747" is $386.8M даёт $386.8M

Для текста, похожего на число, надёжнее кавычки: так 747 выше не попадает в вычисление. Скобки, содержащие только число, являются частью арифметики, поскольку число рядом со скобками означает умножение:

calc
$999 (3) даёт $2,997.00

Поэтому выносите количество за скобки или указывайте внутри, что именно считаете, например $999 (3 handsets). Любое содержимое, кроме отдельного числа, остаётся комментарием — в том числе слово с дефисом или процент:

calc
£134 (25% discount already applied) даёт £134.00
£10 (mother-in-law) даёт £10.00

Строка с решёткой и пробелом в начале целиком считается комментарием. Это удобно для заголовков внутри блока.

Именно пробел превращает решётку в комментарий. Знак # вплотную к слову, например #food, — тег: он помечает строку, не участвует в вычислении и позволяет суммировать все строки с этим тегом в любом месте блока.

calc
£12.50 lunch #food даёт £12.50
£8 coffee #food даёт £8.00
total of #food даёт £20.50

Решётка с цифрами — ни комментарий, ни тег. Она задаёт номер предмета строки и не участвует в расчёте, поэтому номера счетов, заказов и деталей можно сохранять как есть.

calc
Invoice #123: £250 даёт £250.00
part #4 weighs 20 g даёт 20 g

Подписи

Метка — несколько слов с двоеточием и пробелом в начале строки. Она описывает результат, не участвуя в вычислении:

calc
rent = £1,250
bills = £180
Rent and bills: rent + bills даёт £1,430.00
Café bill: £12.50 + £4 даёт £16.50

Метки могут содержать буквы, в том числе с диакритикой, цифры, пробелы и подчёркивания, например Flat 2: или Q3 rent:.

Метка не создаёт имя. После Rent and bills: rent + bills значения с именем Rent and bills не существует. Для повторного использования результата применяйте =. Не ставьте метку перед присваиванием: Housing: rent = £1,250 покажет сумму, но не сохранит rent.

Присваивание

Знак = задаёт имя значению. Строка также показывает само значение, чтобы его можно было проверить.

calc
price = £85 даёт £85.00
price + 20% даёт £102.00

Для изменения уже определённого имени используйте +=, -=, *= или /=:

calc
holiday fund = £400
holiday fund += £150 даёт £550.00
holiday fund -= £85 даёт £465.00
servings = 4
servings *= 3 даёт 12
flour = 750 g
flour /= 3 даёт 250 g

Если правая часть вызывает ошибку, имя сохраняет эту ошибку. Все строки, использующие его, показывают её, пока вы не присвоите новое значение:

calc
guests = 0
per head = £120 / guests даёт Error: divide by zero
per head + £5 даёт Error: divide by zero

Сохраняемое значение может сопровождаться описанием, как в отдельной строке. Но случайные слова вокруг одного имени в правой части неоднозначны: при rent = £1,150 запись x = spent excl rent сообщит об ошибке spent excl rent, а не молча сохранит аренду.

calc
paid rent = £1,150
daily spend = paid rent / 16 даёт £71.88

Имена

Имя может состоять из нескольких слов и содержать буквы с диакритикой, нелатинские буквы, цифры, подчёркивания и эмодзи:

calc
flat white = £3.40
flat white * 5 даёт £17.00
crème brûlée = £6.50
crème brûlée * 2 даёт £13.00
🍎 price = £0.45
🍎 price * 6 даёт £2.70
q1 sales = £12,400
q2 sales = £14,100
q1 sales + q2 sales даёт £26,500.00
bedroom_width = 3.2 m
bedroom_width * 2 даёт 6.4 m

Имя может включать служебные слова Varlig, например to, in или needed, и совпадать с именем функции, например floor. Там, где оно используется как значение, Varlig читает вашу переменную:

calc
time to work = 25 min
time to work * 10 даёт 4 hours 10 min
paint needed = 12.44 L
paint needed to 1 dp даёт 12.4 L
floor = 12 m²
floor * 2 даёт 24 m²
floor(3.7) даёт 3

Со скобками, например floor(3.7), функция по-прежнему выполняет обычное действие.

Имя может даже заканчиваться числом прописью — например, чтобы цена читалась как в меню:

calc
table for four = £96
table for four / 4 даёт £24.00

Если два имени начинаются одинаково, выбирается более длинное. Поэтому имя с номером читается целиком:

calc
batch = £8.01
batch 2 = £8.21
batch 2 - batch даёт £0.20

Имена чувствительны к регистру: eggs и Eggs — разные значения.

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

Имена, совпадающие со встроенными словами

Определённое вами имя имеет приоритет перед единицей, числом прописью или константой с тем же написанием. Однако обычные имена не меняют запись количества: число непосредственно перед существительным во множественном числе или единицей задаёт количество, а процент перед tip или tax — чаевые или налог. Поэтому значения с именами hours, nights или tip не меняют следующие строки:

calc
rate = £14 / hour
hours = 7.5
rate * 7.5 hours даёт £105.00
nights = 14
£118/night * 14 nights даёт £1,652.00
tip = $12.69
$84.60 + 18% tip даёт $99.83

Наведите указатель на слово, чтобы увидеть его трактовку. В rate * 7.5 hours подсказка сообщает: «Counts hours here, not the variable hours = 7.5.» — здесь считаются часы, а не используется переменная. В других позициях имя означает ваше значение, как в split £90 among people.

Перевод работает аналогично: после in, to или as единица имеет приоритет перед именем с числом без единиц. При miles = 12 выражение 20 km in miles всё ещё даёт 12,4274238447 мили. Имя перед единицей масштабирует её, а не задаёт цель перевода: 15.2 m in scale miles при scale = 76.2 сообщает Unsupported: conversion to scale miles, не выбирая одну из неоднозначных трактовок.

Составная единица без пробелов вокруг косой черты читается как единица независимо от других значений её букв. Поэтому плотность или скорость, вставленная из технической таблицы, сохраняет смысл:

calc
g = 9.81 m/s²
2 g даёт 19.62 m/s²
2.7 g/cm³ даёт 2.7 g/cm³
50 kg * g даёт 490.5 N

В некоторых случаях ваше определение всё же меняет смысл строки:

  • Одна буква всегда означает ваше значение: после m = 3 запись 2 m равна 6, а не двум метрам.
  • Число перед именем в единственном числе умножает его: после width = 3 запись 2 width равна 6. То же относится к однобуквенному имени перед единицей или оператором. Подсказка объясняет это и предлагает явное 2 * width.
  • Числа прописью и константы тоже заменяются: после one = 7 выражение one times two равно 14.

Две привычки помогут избежать большинства неожиданностей:

  • Не используйте отдельные обозначения единиц m, s, h или in как имена и не переопределяйте константы и числа прописью вроде pi, one или i.
  • Выбирайте понятные имена, например hours worked, day rate или run distance.

Порядок строк в документе

Каждая строка видит имена, определённые выше. Они также доступны в последующих блоках вычислений той же заметки: исходные значения можно задать один раз и использовать ниже.

calc
price = £20
quantity = 3
cost = price * quantity даёт £60.00
price = £25
price * quantity даёт £75.00
cost даёт £60.00

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

Ответ выше

Слово prev означает ближайший результат выше. ans равнозначно ему, если только вы не определили собственное значение ans. Они удобны для быстрого продолжения расчёта:

calc
£1,250 * 12 даёт £15,000.00
prev / 52 даёт £288.46
ans + £20 даёт £308.46

Для суммы группы строк напишите sum или total отдельной строкой. См. Суммирование строк выше.

Ссылка на строку по номеру

Имена line1, line2 и далее ссылаются на вычисление по его позиции в заметке; все блоки считаются последовательно:

calc
price = £100 даёт £100.00
line1 * 2 даёт £200.00

Ссылка остаётся привязана к исходной строке. Если вставить строку выше или переместить строки командами Format › Move Line Up и Move Line Down, вычисление продолжит использовать ту же строку. Varlig обновит номера в тексте отдельным отменяемым действием, чтобы запись соответствовала результату.

Если удалить целевую строку, ссылка покажет Error: line2 refers to a deleted line, а не начнёт использовать другое число. Отмена восстановит обе строки.

Ссылки сохраняются при копировании и вставке

При копировании или вырезании и вставке строк вычислений ссылки line2 и ↑ продолжают указывать на прежние значения:

  • Ссылка на скопированную строку следует за её копией; номер обновляется по новому положению.
  • Ссылка на нескопированную строку сохраняет исходную цель при вставке в ту же заметку.
  • При вставке в другую заметку ссылка превращается в имя, определённое целевой строкой, например rent для rent = $1,200. Оно заработает, когда новая заметка определит его или импортирует. Строка без имени превращается в ссылку вроде line2_of_Budget, которая сообщает о проблеме до замены:
calc
5 + line2_of_Budget даёт Unsupported: line2_of_Budget is a line of another note

Буфер обмена содержит только выделенный текст, поэтому другие приложения получают именно его. Вставка отменяется одним действием. Строки из защищённой паролем заметки вставляются без изменения записи.

Превращение текста в вычисление

Вставили счёт или написали строки, которые нужно посчитать? Выделите их и выберите Format › Convert to Calculation Block либо нажмите ⌘Y. Varlig обрамит текст блоком вычислений одним отменяемым действием, и сбоку появятся результаты.

Без выделения ⌘Y вставляет пустой блок. Текст вне блока никогда не вычисляется: числа, даты и номера счетов во вставленном письме остаются как есть.

Сброс области видимости

Отдельная строка --- начинает новую область видимости. Имена, собственные единицы и функции, определённые выше, ниже неё больше недоступны. Так удобно сравнивать два сценария в одной заметке, не смешивая их значения.

calc
# Option A: the flat in town
rent = £1,250
travel = £60
rent + travel даёт £1,310.00
---
# Option B: the flat further out
rent = £980
travel = £210
rent + travel даёт £1,190.00

Ниже --- имя travel нужно определить заново. Иначе использующей его строке не на что будет сослаться.

Условные выражения

Выражение if … then … else … выбирает одно из двух значений по условию. Его можно использовать отдельно или присвоить результат имени:

calc
basket = £34.50
delivery = if basket >= £40 then £0 else £3.99 даёт £3.99
basket + delivery даёт £38.49

Для нескольких исходов объединяйте ветви через else if:

calc
basket = £34.50
if basket < £20 then £4.99 else if basket < £40 then £2.99 else £0 даёт £2.99

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

calc
guests = 0
if guests > 0 then £120 / guests else £0 даёт £0.00

if и unless после выражения

Условие можно поставить после значения. Форма value if condition показывает значение при выполнении условия, а value unless condition — при его невыполнении. В остальных случаях строка ничего не показывает.

calc
basket = £34.50
£3.99 if basket < £40 даёт £3.99
£3.99 unless basket >= £40 даёт £3.99

Значением может быть текст в двойных кавычках. Тогда проверка выводит понятное сообщение при нужном условии и остаётся пустой в остальное время:

calc
conversion = 0.667%
"on target" if conversion > 0.5% даёт on target

Присваивание внутри условного выражения

Обе ветви могут присваивать значение одному имени:

calc
basket = £34.50
if basket >= £40 then shipping = £0 else shipping = £3.99 даёт £3.99
shipping даёт £3.99

Если есть только ветвь then, присваивание происходит при истинном условии; иначе имя сохраняет прежнее значение:

calc
basket = £34.50
points = 0
if basket > £30 then points = 50 даёт 50
points даёт 50

Сравнения вроде >= и операторы && и || описаны в разделе Операторы, сравнения и условия.

Всё вместе

Вот небольшой счёт фрилансера в виде обычной заметки:

calc
# March invoice
day rate = £420
days worked = 6
travel = £86.40 // train fares
fees = day rate * days worked даёт £2,520.00
subtotal = fees + travel даёт £2,606.40
vat registered = true
vat = if vat registered then subtotal * 20% else £0 даёт £521.28
Total due: subtotal + vat даёт £3,127.68

У каждого исходного значения есть имя. В следующем месяце достаточно изменить days worked и travel, и остальная часть счёта пересчитается. Комментарии и метка делают блок понятнее, а условие позволяет использовать одну заметку независимо от того, начисляете ли вы НДС.