Как число превратить в строку?

kvasov
Дата: 01.09.2005 13:30:50
Как число превратить в строку?
LittleCat
Дата: 01.09.2005 14:04:49
Применив к нему строковую операцию (если число является операндом строковой операции, то такое преобразование осуществляется неявно). Так что... ничего специально делать не надо :-))
ну я
Дата: 01.09.2005 14:20:47
Cache, как бы ни хотелось того производителю, тем не менее позволяет отличить число от строки, и часть функций (например $zhex, $zboolean) критичны к этому факту. Насильно привести переменную из внутреннего числового представления к внутреннему строковому можно, как и сказал уже LittleCat, применив строковую операцию. Не изменить при этом строкового представления можно например конкатенацией с пустой строкой. Например:
s a=12
w $zhex(a)
w $zhex(a_"")
kvasov
Дата: 01.09.2005 15:02:00
s ^test(20_"")="test"
s ^test("20")="test"
s ^test(20)="test"

вот эти штуки пишут в одну и ту же позицию глобала

Так какой же там индекс - число или строка?

Все что похоже на число, то есть если в строке одни цифры и первая не ноль - то это число - так что-ли?

как-то оригинально
то есть нет ни строк, ни чисел - Каше сам разберется?
LittleCat
Дата: 01.09.2005 15:27:12
kvasov

как-то оригинально
то есть нет ни строк, ни чисел - Каше сам разберется?

Именно так ! Если вспомнить историю, то изначально в М-системах ВСЕ данные хранились как строки, и числовая их интерпретация происходила при использовании этих данных в числовых операциях. Введение внутренней типизации в Cache - очередная попытка ИС ускорить работу своего продукта. К сожалению, логическая стройность и непротиворечивость системы при этом страдает :-(
ну я
Дата: 01.09.2005 17:30:44
kvasov
s ^test(20_"")="test"
s ^test("20")="test"
s ^test(20)="test"

вот эти штуки пишут в одну и ту же позицию глобала

Так какой же там индекс - число или строка?


Значения индексов канонизируются. В данном случае все три будут означать одно и то же, при взятии в переменную, видимо, получите внутреннее представление как числа.

kvasov
Все что похоже на число, то есть если в строке одни цифры и первая не ноль - то это число - так что-ли?


Правила канонизации чуть сложнее, но в принципе примерно так. Детали в слове "похоже на число".

kvasov
как-то оригинально
то есть нет ни строк, ни чисел - Каше сам разберется?


Что ж тут оригинального? Стандарт мампса, однако.
Сашок
Дата: 05.09.2005 17:51:21
ну я
Значения индексов канонизируются. В данном случае все три будут означать одно и то же, при взятии в переменную, видимо, получите внутреннее представление как числа.
...
Что ж тут оригинального? Стандарт мампса, однако.


ну_я, я даже удивился, что ты не написал для примера что-то вроде такого:
INTRAM>s ^сашок($lb(20))="тест"
INTRAM>s ^сашок($lb("20"))="тест"

:-)
ну я
Дата: 05.09.2005 18:34:28
Сашок
ну_я, я даже удивился, что ты не написал для примера что-то вроде такого:
INTRAM>s ^сашок($lb(20))="тест"
INTRAM>s ^сашок($lb("20"))="тест"

:-)

Не хотел пугать раньше времени неканоничностью списков. Та еще структура ;-)