LINUX.ORG.RU

тем временем в няшном питоне:

In [1]: class Foo():
   ...:     def omg(self):
   ...:         print("omg")
   ...:         
In [2]: s = "Foo"
In [3]: o1 = eval(s)()
In [4]: o1.omg()
omg
In [5]: o2 = locals()[s]()
In [6]: o2.omg()
omg
val-amart ★★★★★
()
Последнее исправление: val-amart (всего исправлений: 2)
Ответ на: комментарий от val-amart

Ну и что в этом няшного?

TDrive ★★★★★
() автор топика
Ответ на: комментарий от val-amart

Ну, в Ruby тоже так можно:

class Foo
  def self.omg
    p 'omg'
  end
end

s = 'Foo'
o = eval s
o.omg

Только ведь это явный моветон. Если строку мы получаем от пользователя, то использование eval чревато. ::const_get же делает как раз то, что нужно, и не более того.

Anatolik ★★
()
Ответ на: комментарий от val-amart
<?php

class Foo
{
	public function bar()
	{
		echo 'baz';
	}
}

$cls = 'Foo';

$x = new $cls;

$x->bar();
user@computer ~> php -f ./test.php 
baz

:-)

sventovit
()
Ответ на: комментарий от Anatolik

я поэтому специально привел второй вариант, без евал через гетаттр в неймспейсе.

val-amart ★★★★★
()
Ответ на: комментарий от anonymous

Какой же ты говнокодер.

аноны как всегда радуют своими коструктивными замечаниями.

TDrive ★★★★★
() автор топика
Ответ на: комментарий от Deleted

неужели язык общего назначения? 99% руби - веб, 1% - чиф который опять же используется для серверов которые веб, ну и там уже ерланг наполовину же

umren ★★★★★
()
Ответ на: комментарий от umren

Неужели в самом деле все сгорели карусели? Предлагаю не включать режим валенка.

Deleted
()

Если в Rails то можно так:

"Ololo".constantize
vladimir-vg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.