| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		danzki Участник - экстремал
 
  Вступление в Клуб: 30.09.2010
  | 
		
			
				 Пн Сен 29, 2014 14:18   Перегрузка функции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Добрый всем день!
 
 
Можно ли в Администраторе словаря реализовать перегрузку функции?
 
 
Если две функции, выполняющие одно и то действие для разным Продуктов (Кредит, Депозит)
 
 	  | Код: | 	 		  get_smth(p_cred ref [PR_CRED])
 
и 
 
get_smth(p_depn ref [DEPN]) | 	  
 
 
На выходе у обеих один тип данных.
 
 
При компиляции пакета пишет ошибки [PR_CRED] и [DEPN] не совместимы и тд | 
			 
		  | 
	 
	
		  | 
	 
	
		prankster Профи
 
  Вступление в Клуб: 22.08.2014
  | 
		
			
				 Пн Сен 29, 2014 15:48   Re: Перегрузка функции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | danzki пишет: | 	 		  Добрый всем день!
 
 
Можно ли в Администраторе словаря реализовать перегрузку функции?
 
 
Если две функции, выполняющие одно и то действие для разным Продуктов (Кредит, Депозит)
 
 	  | Код: | 	 		  get_smth(p_cred ref [PR_CRED])
 
и 
 
get_smth(p_depn ref [DEPN]) | 	  
 
 
На выходе у обеих один тип данных.
 
 
При компиляции пакета пишет ошибки [PR_CRED] и [DEPN] не совместимы и тд | 	  
 
 
На уровне пакетов все это транслируется в
 
get_smth(p_cred in number),  
 
get_smth(p_depn in number)
 
 
Так что, именно так - не получится. | 
			 
		  | 
	 
	
		  | 
	 
	
		danzki Участник - экстремал
 
  Вступление в Клуб: 30.09.2010
  | 
		
			
				 Пн Сен 29, 2014 16:18    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Да, точно.
 
 
Есть вариант в одну из функций параметр добавить  
 
 
 	  | Код: | 	 		  get_smth(p_cred ref [PR_CRED]);
 
get_smth(p_depn ref [DEPN], p_adds string); | 	 
  | 
			 
		  | 
	 
	
		  | 
	 
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Вт Сен 30, 2014 07:41   Re: Перегрузка функции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | prankster пишет: | 	 		   	  | danzki пишет: | 	 		  Добрый всем день!
 
 
Можно ли в Администраторе словаря реализовать перегрузку функции?
 
 
Если две функции, выполняющие одно и то действие для разным Продуктов (Кредит, Депозит)
 
 	  | Код: | 	 		  get_smth(p_cred ref [PR_CRED])
 
и 
 
get_smth(p_depn ref [DEPN]) | 	  
 
 
На выходе у обеих один тип данных.
 
 
При компиляции пакета пишет ошибки [PR_CRED] и [DEPN] не совместимы и тд | 	  
 
 
На уровне пакетов все это транслируется в
 
get_smth(p_cred in number),  
 
get_smth(p_depn in number)
 
 
Так что, именно так - не получится. | 	  
 
 
Делаем так:
 
в DEPN и в PR_CRED заводим простые операции с одинаковым именем OPER.
 
В теле операции пишем:
 
 	  | Код: | 	 		  
 
declare
 
  n number;
 
begin
 
  cast_to(DEPN_REF, n).OPER;
 
  cast_to(PR_CRED_REF, n).OPER;
 
end;
 
 | 	 
  | 
			 
		  | 
	 
	
		  | 
	 
	
		timofeev Участник со стажем
 
  Вступление в Клуб: 27.04.2012
  | 
		
			
				 Вт Сен 30, 2014 13:36    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				А я бы так написал:
 
get_smth(p_prod ref [PRODUCT])
 
а внутри, если надо надо использовать реквизиты продуктов
 
p_prod->(PR_CRED)[xxx]
 
если надо понять, что пришло на вход функции, то можно так
 
if p_prod%class='PR_CRED' then
 
или еще что-то похожее | 
			 
		  | 
	 
	
		  | 
	 
	
		danzki Участник - экстремал
 
  Вступление в Клуб: 30.09.2010
  | 
		
			
				 Ср Окт 01, 2014 15:54    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | timofeev пишет: | 	 		  А я бы так написал:
 
get_smth(p_prod ref [PRODUCT])
 
а внутри, если надо надо использовать реквизиты продуктов
 
p_prod->(PR_CRED)[xxx]
 
если надо понять, что пришло на вход функции, то можно так
 
if p_prod%class='PR_CRED' then
 
или еще что-то похожее | 	  
 
 
Реализовал что-то подобное | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |