Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / получение массива из функции / 4 сообщений из 4, страница 1 из 1
17.08.2005, 10:01:03
    #33219646
LightWarrior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение массива из функции
Результатом работы функции является массив значений
как изолировать функцию? Я подразумеваю то чтобы функция не зависела от внешних имен переменных. Кто и как решал подобную проблему?
...
Рейтинг: 0 / 0
17.08.2005, 10:05:26
    #33219666
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение массива из функции
Передавай в ф-цию ссылку на массив.
...
Рейтинг: 0 / 0
17.08.2005, 11:25:44
    #33219951
LightWarrior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение массива из функции
AleksMedПередавай в ф-цию ссылку на массив.
то есть функция должна знать или определять размер массива и т.д. и вызывая эту функцию придется представлять как она работает. Это неудобно. Но похоже это единственный более-менее вразумительный способ и фоксе
...
Рейтинг: 0 / 0
17.08.2005, 12:01:07
    #33220108
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получение массива из функции
Стандартные массивы не очень удобны, но их можно обернуть в класс и тогда они приобретают все преимущества обычных типов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
local loArray1
clear 
loArray1 = create_array()
? "после создания"
for lnItem =  1  to loArray1.count
	? loArray1.item[m.lnItem]
endfor

loArray1 = modify_array(loArray1)
? "после модификации"
for lnItem =  1  to loArray1.count
	? loArray1.item[m.lnItem]
endfor
return

function create_array
	local lovector
	lovector = createobject('vector')
	lovector.add( 220 )
	lovector.add( 120 )
	lovector.add( 10 )
	return m.lovector
endfunc
function modify_array
	lparameters lovector
	lovector.remove( 1 )
	return m.lovector
endfunc

define class vector as custom

	*--	число элементов
	count =  0 
	*--	емкость 
	capacity =  0 
	*-- элементы
	dimension item[ 1 ]

	*--	инициализировать вектор размеров tncount и со значением по умолчанию tudefaultvalue
	function init
		lparameters tncount, tudefaultvalue
		if type('m.tncount') == 'N'
			local loldCompatible
			loldCompatible = set('compatible')
			set compatible off
			with this
				store m.tncount to .count, .capacity				
				dimension .item[.capacity]
				.item = m.tudefaultvalue
			endwith
			set compatible &loldCompatible.
		endif
	endfunc
	
	*--	очистить, без освобождения памяти
	procedure clear
		with this
			.count =  0 
		endwith
	endproc

	*--	добавить элемент в конец массива
	procedure add
		lparameters tuElement
		local loldCompatible
		loldCompatible = set('compatible')
		set compatible off
		with this
			if .count >= .capacity
				.capacity =  2  * iif(empty(.capacity),  8 , .capacity)
				dimension .item[.capacity]
			endif
			.item(.count +  1 ) = m.tuElement
			.count = .count +  1 
		endwith
		set compatible &loldCompatible.
	endproc

	*-- удалить элемент
	procedure remove
		lparameters tnindex
		with this
			if between(m.tnindex,  1 , .count)
				adel(.item, m.tnindex)
				.count = .count -  1  
			endif
		endwith
	endproc
enddefine
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / получение массива из функции / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]