Что нового

[Данные, строки] Как определить, какой тип данных содержит переменная?

Demon83

Новичок
Сообщения
14
Репутация
0
Многие функции которые призваны, например, вернуть массив, в случае ошибки, возвращают, всякое, числа, строки... причём возвращаемые значения не всегда описаны в справке, и если я обращаюсь к этой переменной как к массиву, скрипт завершается. Как мне определить заранее, как мне обращаться к переменной?
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
#include 'array.au3'
$file='aaaa'
$str=StringRegExp($file,'\d+',3)
If Not @error Then _ArrayDisplay($str,1)
MsgBox(32,'',VarGetType($str))
$file='111'
$str=StringRegExp($file,'\d+',3)
If Not @error Then _ArrayDisplay($str,2)
MsgBox(32,'',VarGetType($str))

http://autoit-script.ru/index.php?topic=10070.0
 
Автор
D

Demon83

Новичок
Сообщения
14
Репутация
0
Спасибо за помощь, но использовать проверку на ошибку я не могу, неудобно, а второй вариант, всё равно выдаёт ошибку, хотя часть кода с ошибкой, не должна выполнятся по идее...
Код:
#include <File.au3>
Global $hFile = FileOpen(@ScriptDir & "\Example.log", 1) 
$a=-2
_FileWriteLog($hFile, "Скрипт вылетает если значение -2, но работает если массив: "&(IsArray($a)=1)?($a[0]&" / "&$a[1]):($a))
FileClose($hFile)

Непонятненько.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Вы неверно установили границы выражения (у вас вся строка считается выражением и так как она не пустая оно считается правдивым)
Код:
#include <File.au3>
Global $hFile = FileOpen(@ScriptDir & "\Example.log", 1)
$a = -2
_FileWriteLog($hFile, "Скрипт вылетает если значение -2, но работает если массив: " & (IsArray($a) ? ($a[0] & " / " & $a[1]) : $a))
FileClose($hFile)
 
Автор
D

Demon83

Новичок
Сообщения
14
Репутация
0
Спасибо, действительно в таком виде работает, но я не понимаю почему, в справке написано...
Код:
(expression) ? (expression1 if expression is True) : (expression2 if expression is False)

а также...
Справка сказал(а):
Although not necessary in all cases, it is strongly recommended that the 3 elements are enclosed in parentheses.
То есть явно указано что скобки нужны, рекомендуются, но по факту они мешают :blink:
 
Верх