Рефлексија (програмирање) — разлика између измена
Садржај обрисан Садржај додат
Нема описа измене |
|||
Ред 118:
=== eC ===
У наставку је пример у [[eC]]-у:<source lang="ec">//
Foo foo { };
foo.hello();
// са рефлексијом
Class fooClass = eSystem_FindClass(__thisModule, "Foo");
Instance foo = eInstance_New(fooClass);
Ред 130:
=== ECMAScript ===
У наставку је пример у [[ECMAScript]]-у, и стога важи и за [[Јаваскрипт]] и [[Actionscript|ActionScript]]:<source lang="ecmascript">
// без рефлексије
new Foo.hello()
// са рефлексијом
// под претпоставком да Foo борави у овде
new this['Foo']['hello']()
// или без претпоставке
new (eval('Foo'))['hello']()
// или једноставно
eval('new Foo.hello()')
</source>
Ред 148:
У наставку је пример у [[Јава (програмски језик)|Јави]]:<source lang="java">
// без рефлексије
Foo foo = new Foo();
foo.hello();
// са рефлексијом
Object foo = Class.forName("complete.classpath.and.Foo").newInstance();
//
Method m = foo.getClass().getDeclaredMethod("hello", new Class<?>[0]);
m.invoke(foo);
Ред 162:
=== Objective-C ===
Следећи пример у [[Objective-C]]-у имплицира [[Objective-C|OpenStep]] или се користи [[фондација Кит]] оквир:<source lang="objc">
// Foo
@interface Foo : NSObject
- (void)hello;
@end
// Слање "здраво" на пример Foo без рефлексије.
Foo *obj = [[Foo alloc] init];
[obj hello];
// Слање "здраво" на пример Фоо са рефлексијом.
id obj = [[NSClassFromString(@"Foo") alloc] init];
[obj performSelector: @selector(hello)];
Ред 212:
У наставку је пример у [[Перл (програмски језик)|Perl]]-у:<syntaxhighlight lang="perl">
# без рефлексије
my $foo = Foo->new;
$foo->hello;
#
Foo->new->hello;
# са рефлексијом
my $class = "Foo"
my $constructor = "new";
Ред 227:
$f->$method;
#
$class->$constructor->$method;
#
eval "new Foo->hello;";
Ред 237:
=== PHP ===
У наставку је пример у [[PHP]]-у:<syntaxhighlight lang="php">
// без рефлексије
$foo = new Foo();
$foo->hello();
// са рефлексијом
$reflector = new ReflectionClass('Foo');
$foo = $reflector->newInstance();
Ред 247:
$hello->invoke($foo);
// коришћење повратних позива
$foo = new Foo();
call_user_func(array($foo, 'hello'));
// коришћењем променљиве варијабле синтаксе
$className = 'Foo';
$foo = new $className();
Ред 261:
У наставку је пример у [[Пајтон (програмски језик)|Пајтону]]:<syntaxhighlight lang="python">
# без рефлексије
obj = Foo()
obj.hello()
# са рефлексијом
class_name = "Foo"
method = "hello"
Ред 271:
getattr(obj, method)()
#
eval("Foo().hello()")
Ред 278:
=== R ===
У наставку је пример у [[R (програмски језик)|R]]-у:<source lang="rsplus">
# Без рефлексије, под претпоставком да foo () враћа С3-тип објекат који има методу "здраво"
obj <- foo()
hello(obj)
# са рефлексијом
the.class <- "foo"
the.method <- "hello"
Ред 293:
У наставку је пример у [[Руби (програмски језик)|Рубију]]:<syntaxhighlight lang="ruby">
# без рефлексије
obj = Foo.new
obj.hello
# са рефлексијом
class_name = "Foo"
method = :hello
Ред 303:
obj.send method
#
eval "Foo.new.hello"
|