1 (изменено: romzes96, 2020-11-08 19:24:10)

Тема: AHK: Передача списка в функцию

Я столкнулся с проблемой передачи массива в функцию. А именно с передачей листа.

Вот код:

+ открыть спойлер

HP := [114, 871, 114, 1077]
MP := [1802, 871, 1802, 1077]

getpoint(pointdata, pr)
{
	MsgBox % pointdata 
	point := [pointdata[1], pointdata[4] - (pointdata[4] - pointdata[2])*pr]
	return %point%
}

fff = % getpoint(HP, 0.5)
MsgBox, %fff%

Данный код не принтит входной массив.
Как можно это исправить?

Скорее всего проблема не в списке и тд. А в структеру написания и выхова функции.
Может кто помочь разобраться с функциями на AHK и их структурой.
Буду признателен.

2

Re: AHK: Передача списка в функцию

А что это за действие: = % ? В AHK такого нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Передача списка в функцию

romzes96 пишет:

не принтит входной массив

HP := [114, 871, 114, 1077]
MP := [1802, 871, 1802, 1077]

getpoint(pointdata, pr)
{
	MsgBox % PrintArray(pointdata) 
	point := [pointdata[1], pointdata[4] - (pointdata[4] - pointdata[2])*pr]
	return %point%
}

fff := getpoint(HP, 0.5)
MsgBox % PrintArray(fff) 

PrintArray(arr) {
	for k, v in arr
		str .= k ":""" v """, "
	Return "{" RTrim(str, ", ") "}"
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: Передача списка в функцию

Всем спасибо. Я в принципе понял в чем проблема.
serzh82saratov спасибо за пояснение принта.
teadrinker = % == := равноценно.

Проблема была в том что я ореинтировался по принту. И думал что в функцию не входит список. Так же я пытался запринтить список внутри функции. Но AHK не может выводить такие принты. После чего из функции тоже выходит список. Принт не работает так как хотелосьбы (к примеру как в Python).

Отпринтить  список для проверки можно следующим образом. Только для проверки. :

list := [1, 2, 3, 4]
for i in list
	{
		str .= list[i]
	}
MsgBox % str

MsgBox покажет следующую строку = 1234
Что является конкатенацией элементов списка в один.

Ой мда когда скопипастил предложенный код, не разглядел его, и написал свою буйду. Мда, маразм.
Но всем спасибо!

5

Re: AHK: Передача списка в функцию

romzes96 пишет:

= % == := равноценно

Нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Передача списка в функцию

romzes96

В Питоне вообще проблем не было с отображением списков/массивов и остального, великая возможность через str() превратить почти что угодно в строку, чего не хватает в АХК.

7

Re: AHK: Передача списка в функцию

Это скорее говорит о том, что Вы плохо владеете своим "инструментом", нежели о том, что "инструмент" спроектирован не в соответствии Вашим ожиданиям.