Nano Hash - криптовалюты, майнинг, программирование

Как сложить две переменные вместе и сохранить результат в другой переменной?

Я не могу понять самый простой синтаксис Tcl, как правильно написать следующее:

set var1 5
set var2 3
set var3 $var1 - $var2; # error line

puts $var3
tcl
09.09.2013

Ответы:


1

В Tcl нет синтаксиса для математических операций. Вместо этого он полагается на команду/функцию expr для выполнения математических операций:

set var3 [expr $var1 - $var2]

Лучшей практикой является предоставление только одного аргумента для expr в фигурных скобках, чтобы избежать тонких проблем, таких как двойная замена:

set var3 [expr {$var1 - $var2}]
09.09.2013
  • Спасибо. Очень странно, что язык сценариев требует столько усилий для чего-то настолько простого (по сравнению с C), хотя я ценю интерполяцию строк. 09.09.2013
  • @АндрейМ. После того, как вы привыкнете к этому, вам потребуется совсем немного усилий :) И вам не нужно ставить ; почти после каждой строки, если это не достаточная компенсация! 09.09.2013
  • Языки — это нечто большее, чем просто разделение между сценариями и компиляцией. Действительно, C также является языком сценариев, поскольку существует реализация интерпретатора C, который может запускать программы C без компиляции, но Java — это язык, для которого требуется компилятор, хотя это язык, который должен работать на интерпретаторе (VM). Tcl принадлежит к семейству языков с минимальным синтаксисом, таких как Forth и Lisp, где язык не может выполнять математику как часть синтаксиса, а вместо этого использует функции, чтобы сделать всю тяжелую работу за вас. 09.09.2013

  • 2

    В Tcl вам нужна функция expr для вычислений:

    set var3 [expr {$var1 - $var2}]
    

    Однако вы можете пропустить их в Tcl 8.5+, когда имеете дело с индексами, например:

    % set numberlist [list 1 2 3 4]
    % set index 2
    % puts [lindex $numberlist $index-1]
    2
    

    В противном случае в более старых версиях вам пришлось бы снова использовать expr:

    % set numberlist [list 1 2 3 4]
    % set index 2
    % puts [lindex $numberlist [expr {$index-1}]]
    2
    

    Рекомендуется помещать фигурные скобки в ваши exprсессии, хотя вы не обязаны.

    09.09.2013
  • Для второго вы можете использовать incr, если предпочитаете это expr. 09.09.2013

  • 3

    http://www.beedub.com/book/2nd/tclintro.doc.html

    http://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/tcl/expr.n.html

    Пытаться

    установить var3 [выражение $var1 - $var2]

    09.09.2013
  • Вы забыли квадратные скобки 09.09.2013
  • Да, еще слишком рано, и TCL были слишком давно. Спасибо. 09.09.2013

  • 4

    Начиная с Tcl 8.5, математические операторы и функции также доступны в виде команд. Проверьте раздел примеров руководства по mathop, чтобы найти альтернативу до expr.

    09.09.2013
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..