2008-09-29 4 views
0

J'ai couru à travers le code suivant dans Ely Greenfield's SuperImage de son composant livre - je comprends loader.load() mais qu'est-ce que le reste de faire? Il ressemble à une sorte de déclaration en ligne folle si, mais encore, je suis un peu pré-réservé. Et s'il s'agit d'une instruction if - est-ce mieux qu'une déclaration if régulière?Qu'est-ce que loader.load ((newSource is URLRequest)? NewSource: new URLRequest (newSource)); faire?

+0

Combien de fois puis-je utiliser "if statement" dans le même post? :) – onekidney

Répondre

11

? est appelé « opérateur ternaire » et son utilisation de base est:

(expression) ? (evaluate to this if expression is true) : (evaluate to this otherwise); 

Dans ce cas, si Newsource est un URLRequest, loader.load sera transmis Newsource directement, sinon il sera adopté une nouvelle URLRequest construit à partir Newsource . L'opérateur ternaire est fréquemment utilisé comme une forme plus concise de if, car il permet à ifs d'être en ligne. Le code correspondant dans ce cas serait:

if (newSource is URLRequest) 
    loader.load(newSource); 
else 
    loader.load(new URLRequest(newSource)); 
0

utilise le ternary ?: operator. la première partie est la condition, entre le? et: est ce qu'il faut retourner si la condition est vraie. après le: est ce qu'il faut retourner si la condition est fausse.

un exemple plus simple

String str = null; 
int x = (str != null) ? str.length() : 0; 

serait le même que

String str = null; 
int x; 
if (str != null) 
    x = str.length() 
else 
    x = 0; 
1

Fondamentalement, ce qu'il dit est: si Newsource est un type de URLRequest, passe alors la variable Newsource dans la méthode de charge, Si ce n'est pas un type d'URLReuqest, créez un nouvel URLRequest et transmettez-le dans la méthode load.

La syntaxe de base est: (condition)? (code à exécuter si vrai): (code à exécuter si faux)

+0

Génial merci - c'est logique maintenant ... – onekidney

0

Fondamentalement, ce que cela signifie, pour autant que im au courant, est le demandent wheter que la classe de Newsource variables est une chaîne ou URLRequest comme workmad et jason expliqué. Si c'est un URLRequest, il va exécuter loader.load (newSource: URLRequest). Si ce n'est pas un URLRequest cela signifie automatiquement que c'est une chaîne (en d'autres termes, l'URL). Et dans ce cas, il se déroulera loader.load (nouvelle urlRequest (Newsource: String)

Le code complet pourrait ressembler à ceci:.

function myFunction(newSource:Object):SomeClass { 
var loader:URLLoader = new URLLoader(); 
loader.load((newSource is URLRequest)? newSource:new URLRequest(newSource)); 
} 

Cordialement,

Filipe A.

Questions connexes