Рефлексија (програмирање) — разлика између измена

Садржај обрисан Садржај додат
Нема описа измене
Ред 118:
 
=== eC ===
У наставку је пример у [[eC]]-у:<source lang="ec">// withoutбез reflectionрефлексије
Foo foo { };
foo.hello();
 
// са рефлексијом
// with reflection
Class fooClass = eSystem_FindClass(__thisModule, "Foo");
Instance foo = eInstance_New(fooClass);
Ред 130:
=== ECMAScript ===
У наставку је пример у [[ECMAScript]]-у, и стога важи и за [[Јаваскрипт]] и [[Actionscript|ActionScript]]:<source lang="ecmascript">
// без рефлексије
// Without reflection
new Foo.hello()
 
// са рефлексијом
// With reflection
 
// под претпоставком да Foo борави у овде
// assuming that Foo resides in this
new this['Foo']['hello']()
 
// или без претпоставке
// or without assumption
new (eval('Foo'))['hello']()
 
// или једноставно
// or simply
eval('new Foo.hello()')
</source>
Ред 148:
У наставку је пример у [[Јава (програмски језик)|Јави]]:<source lang="java">
 
// без рефлексије
// without reflection
Foo foo = new Foo();
foo.hello();
 
// са рефлексијом
// with reflection
Object foo = Class.forName("complete.classpath.and.Foo").newInstance();
// AlternativelyАлтернативно: ObjectОбјекат foo = Foo.class.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 classкласа.
@interface Foo : NSObject
- (void)hello;
@end
 
// Слање "здраво" на пример Foo без рефлексије.
// Sending "hello" to a Foo instance without reflection.
Foo *obj = [[Foo alloc] init];
[obj hello];
 
// Слање "здраво" на пример Фоо са рефлексијом.
// Sending "hello" to a Foo instance with reflection.
id obj = [[NSClassFromString(@"Foo") alloc] init];
[obj performSelector: @selector(hello)];
Ред 212:
У наставку је пример у [[Перл (програмски језик)|Perl]]-у:<syntaxhighlight lang="perl">
 
# без рефлексије
# without reflection
my $foo = Foo->new;
$foo->hello;
 
# orили
Foo->new->hello;
 
# са рефлексијом
# with reflection
my $class = "Foo"
my $constructor = "new";
Ред 227:
$f->$method;
 
# orили
$class->$constructor->$method;
 
# withса eval-ом
eval "new Foo->hello;";
 
Ред 237:
=== PHP ===
У наставку је пример у [[PHP]]-у:<syntaxhighlight lang="php">
// без рефлексије
// without reflection
$foo = new Foo();
$foo->hello();
 
// са рефлексијом
// with reflection
$reflector = new ReflectionClass('Foo');
$foo = $reflector->newInstance();
Ред 247:
$hello->invoke($foo);
 
// коришћење повратних позива
// using callback
$foo = new Foo();
call_user_func(array($foo, 'hello'));
 
// коришћењем променљиве варијабле синтаксе
// using variable variables syntax
$className = 'Foo';
$foo = new $className();
Ред 261:
У наставку је пример у [[Пајтон (програмски језик)|Пајтону]]:<syntaxhighlight lang="python">
 
# без рефлексије
# without reflection
obj = Foo()
obj.hello()
 
# са рефлексијом
# with reflection
class_name = "Foo"
method = "hello"
Ред 271:
getattr(obj, method)()
 
# withса eval-ом
eval("Foo().hello()")
 
Ред 278:
=== R ===
У наставку је пример у [[R (програмски језик)|R]]-у:<source lang="rsplus">
# Без рефлексије, под претпоставком да foo () враћа С3-тип објекат који има методу "здраво"
# Without reflection, assuming foo() returns an S3-type object that has method "hello"
obj <- foo()
hello(obj)
 
# са рефлексијом
# With reflection
the.class <- "foo"
the.method <- "hello"
Ред 293:
У наставку је пример у [[Руби (програмски језик)|Рубију]]:<syntaxhighlight lang="ruby">
 
# без рефлексије
# without reflection
obj = Foo.new
obj.hello
 
# са рефлексијом
# with reflection
class_name = "Foo"
method = :hello
Ред 303:
obj.send method
 
# withса eval-ом
eval "Foo.new.hello"