Определение типа переменной в GNU Octave - PullRequest
1 голос
/ 17 января 2020

Во время практики с Octave я создал переменную с именем my_name = ["Andrew"] и, попросив Octave интерпретировать, является ли она строкой, вывел «0». Опять при использовании typeinfo(my_name) я получил ans = string. Почему я получаю такой вывод?

octave:47> my_name = ["Andrew"]

my_name = Andrew

octave:48> isstring(my_name)

ans = 0

octave:49> typeinfo(my_name)

ans = string

1 Ответ

1 голос
/ 17 января 2020

Согласно документации (выделено мной):

isstring (s)

Возвращает true, если s является строковым массивом.

Массив строк - это тип данных, в котором хранятся строки (векторы строк символов) для каждого элемента в массиве. Он отличается от символьных массивов, которые являются N-мерными массивами, где каждый элемент представляет собой один символ 1x1. Он также отличается от массивов ячеек строк, которые хранят строки в каждом элементе, но использует индексирование ячеек '{}' для доступа к элементам, а не к массивам строк, которые используют обычное индексирование массивов '()'.

Примечание по программированию: В Octave еще не реализованы строковые массивы, поэтому эта функция всегда будет возвращать false.

То есть isstring всегда будет возвращать false (или 0), нет независимо от того, что является вводом.

Вы должны использовать ischar, чтобы определить, является ли ввод массивом символов (== строка).

...