Перейти к содержимому


Фотография

Передача переменной как аргумента функции


Лучший Ответ BloodySunday , 29 December 2016 - 15:17


BloodySunday, тебе нужно изменить код таймера так, чтобы он записывал значение в переменную, название которой ты ему передашь.

 

т.е. к примеру так?

// timer.sqf
_str_var_name = this select 0;
     ...
missionNamespace setVariable [_str_var_name, _seconds];
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 OFFLINE   BloodySunday

BloodySunday

    Рядовой

  • Пользователи
  • 5 сообщений
  • Откуда:Russia

Отправлено 28 December 2016 - 12:56

Всем Доброго времени суток!

Столкнулся с такой проблемой. У меня есть timer.sqf. Данный таймер вызывается, из нескольких мест кода для разных задач.

К примеру, один таймер считает сколько осталось времени в игре, а второй таймер считает сколько игрок находится в зоне.

Вопрос возник такой: как мне сделать так, что бы при вызове функции(таймер в данном случаи), функция сохраняла значение каждый раз когда мне это нужно в определенную переменную (Вообщем передача параметра по ссылке или указателю).

 

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

 

 

За ранее прошу простить, если этот вопрос рассматривался где-то.


  • 0

#2 OFFLINE   BloodySunday

BloodySunday

    Рядовой

  • Пользователи
  • 5 сообщений
  • Откуда:Russia

Отправлено 28 December 2016 - 13:23

Понял, что массивы передаются по указателю и это решило проблему, но как заставить передать ссылку на переменную?


  • 0

#3 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1808 сообщений

Отправлено 28 December 2016 - 15:29

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

:
missionNamespace setVariable [_varName, _value];

Сообщение отредактировал Schatten: 28 December 2016 - 15:30

  • 0

#4 OFFLINE   BloodySunday

BloodySunday

    Рядовой

  • Пользователи
  • 5 сообщений
  • Откуда:Russia

Отправлено 29 December 2016 - 14:58


Как раз и нужно использовать глобальные переменные. Но! Ты можешь передавать название глобальной переменной, в которую потом будешь записывать значение с помощью setVariable: missionNamespace setVariable [_varName, _value];

 

Т.е. мне нужно модифицировать код таймера, так, что бы в зависимости от вызывающей функции он писал в разные глобальные переменные?

Или я не правильно понял?


  • 0

#5 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1808 сообщений

Отправлено 29 December 2016 - 15:03

BloodySunday, тебе нужно изменить код таймера так, чтобы он записывал значение в переменную, название которой ты ему передашь.


  • 0

#6 OFFLINE   BloodySunday

BloodySunday

    Рядовой

  • Пользователи
  • 5 сообщений
  • Откуда:Russia

Отправлено 29 December 2016 - 15:17   Лучший Ответ


BloodySunday, тебе нужно изменить код таймера так, чтобы он записывал значение в переменную, название которой ты ему передашь.

 

т.е. к примеру так?

// timer.sqf
_str_var_name = this select 0;
     ...
missionNamespace setVariable [_str_var_name, _seconds];

  • 0

#7 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1808 сообщений

Отправлено 29 December 2016 - 15:19

BloodySunday, да.


  • 0

#8 OFFLINE   BloodySunday

BloodySunday

    Рядовой

  • Пользователи
  • 5 сообщений
  • Откуда:Russia

Отправлено 29 December 2016 - 15:27

BloodySunday, да.

 

Спасибо! Тогда последний вопрос, если я буду передавать аргументы как массив (массив из одного элемента, к примеру даже ), дабы не плодить глобальные переменные, будет ли это правильно с точки зрения языка? Или же лучше использовать глобальные переменные?


  • 0

#9 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1808 сообщений

Отправлено 29 December 2016 - 15:37

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


  • 0




Яндекс.Метрика