2009-05-18 3 views
1

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

def func1 

    @access = ['public','private','protected'] 
    for acc in @access 
     @temp = "get_"+acc[1]+"_data" 
    end 
end 

def get_public_data 
end 

def get_private_data 
end 

def get_protected_data 
end 

но @temp принимает его как строку и присваиваем его к ней. Пожалуйста, помогите в этом как можно скорее.

Спасибо

+0

Пожалуйста, дайте нам более подробную информацию и пример. – MrHus

+1

Какой язык программирования? – Mnementh

+0

Или язык PL? –

ответ

0

Не знаю, какой язык вы используете, но некоторые языки, т.е. Perl имеют eval() функции, которая делает то, что вы пытаетесь.

Если вы используете Perl или Python вы можете попробовать что-то вроде

@temp = Eval ("получить _" + акк 1 + "_ данные")

+0

Thnx Buddy im развивает его в Ruby On Rails – 2009-05-18 14:08:32

3

В Ruby, методы фактически являются сообщениями , Таким образом, вы можете отправить имя сообщения, используя, да, метод send:

s = 'xyz' 
i = s.send 'length' 
# i = 3 
2
@temp = send "get_#{acc[1]}_data" 

Использование #{acc[1]} вместо «+»

Смежные вопросы