Разделите, чтобы получить соотношение между размерами двух диапазонов, затем вычтите начальное значение вашего внутреннего диапазона, умножьте на коэффициент и добавьте начальное значение вашего второго диапазона. Другими словами,
R = (20 - 10) / (6 - 2)
y = (x - 2) * R + 10
Это равномерно распределяет числа из первого диапазона во втором диапазоне.
Различные POSIX
ошибки происходят из ОС, и вам нужно угадать системный вызов и найти их. Например, не очень удобно догадываться, что команда open
отображается на системный вызов open()
, и поэтому в ней зафиксированы ошибки. Некоторые из них очень маловероятны с Tcl (например, те, которые относятся к передаче неверного буфера, что составляет POSIX EFAULT
), но мы не гарантируем, что ОС не вернет их, потому что ОС просто не дает нам такой гарантии .
Мы должны задокументировать наиболее вероятные из команд, которые касаются операционной системы, но на высоком уровне:
POSIX
из ОС (например, чтение не - существует POSIX ENOENT
), а TCL
взяты из собственного внутреннего кода Tcl (например, из-за передачи неверного числа аргументов в open
, что дает вам TCL WRONGARGS
, или запрос слишком большого выделения памяти, что дает вам TCL MEMORY
, если Tcl удается восстановить). Мы вряд ли исчерпывающе документируем все возможности (особенно в классе TCL
), так как многие вряд ли в правильном коде.
try {} trap {}
используется, когда существует конкретная ошибка, которую необходимо перехватить. Для более общей ловушки используйте try {} on error {}
.
try {
set fh [open myfile.txt w]
} on error {err res} {
puts "Error on open: $res"
}
Существует также команда catch:
if { [catch {set fh [open myfile.txt w]}] } {
puts "error on open."
}