RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
Ah, I see something I missed at first. This example is using literal xml, so the null IS getting interpreted by AS as null and not as a string. I bet it would be different if you did: var xml:XML = XML(outerinnernull/inner/outer); Even so I am still surprised because the null should be the text node and the expression should return an XMLList with zero length. Very interesting. Tracy Spratt, Lariat Services, development services available _ From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of jaywood58 Sent: Thursday, August 13, 2009 12:48 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** --- In flexcod...@yahoogro mailto:flexcoders%40yahoogroups.com ups.com, Tracy Spratt tr...@... wrote: _ From: flexcod...@yahoogro mailto:flexcoders%40yahoogroups.com ups.com [mailto:flexcod...@yahoogro mailto:flexcoders%40yahoogroups.com ups.com] On Behalf Of Paul Andrews Sent: Wednesday, August 12, 2009 9:33 PM To: flexcod...@yahoogro mailto:flexcoders%40yahoogroups.com ups.com Subject: Re: [flexcoders] *** So you think you know ActionScript? (Read original post first) *** Dave Glasser wrote: Consider this code snippet: var xml:XML = outerinnernull/inner/outer; var xmlList:XMLList = xml.inner; trace(xmlList == null); What does the trace statement output, true or false, and why? Please provide an answer without running the code (of course) and, better yet, without consulting any documentation, or any of the other answers that may have been posted already (if you read the list in chronological order.) Pretend it's a job interview question and you have to give it your best shot off the top of your head. And also, if you don't mind, don't top-post your answer, so that if someone does read your answer before the original post, they might get a chance to answer without having seen yours first. xmlList is set to point at somthing which isn't a list, so I think the trace statement will not be reached. That's my 02:31AM thought.. All e4x expressions return an XMLList. It can be empty but is never a null. Besides, the characters. null in a text node are just a string. null in an AS comparison is a special value. The trace will display false. Trace(xmllist.text() ==null ); //would return true. Tracy Spratt, Lariat Services, development services available Like Tracy, I thought it would return false, for the same reason -- that innernull/inner would be interpreted as a string. Was surprised when I ran the code and saw true. What's going on? It seems like the AS decoder recognizes null as a special case.
RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
Actually, no. It would interpret it as null if it were enclosed in curly braces like this: var xml:XML = outerinner{null}/inner/outer; And even then, null might be converted to its String value, null, as the content of the element. I'd have to try it to know for sure. In the example I gave, the content of the element is a String consisting of the letters n, u, l and l, in that order. In any case, the xmlList variable would reference a non-null XMLList object. That's easily proven by dereferencing it: trace(The length is + xmlList.length()); That would output The length is 1. --- On Thu, 8/13/09, Tracy Spratt tr...@nts3rd.com wrote: From: Tracy Spratt tr...@nts3rd.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 3:49 PM Ah, I see something I missed at first. This example is using “literal” xml, so the null IS getting interpreted by AS as null and not as a string. I bet it would be different if you did: var xml:XML = XML(“outerinner null/inner /outer”); Even so I am still surprised because the null should be the text node and the expression should return an XMLList with zero length. Very interesting. Tracy Spratt, Lariat Services, development services available From: flexcod...@yahoogro ups.com [mailto:flexcoders@ yahoogroups. com] On Behalf Of jaywood58 Sent: Thursday, August 13, 2009 12:48 PM To: flexcod...@yahoogro ups.com Subject: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** --- In flexcod...@yahoogro ups.com, Tracy Spratt tracy @... wrote: _ From: flexcod...@yahoogro ups.com [mailto:flexcod...@yahoogro ups.com] On Behalf Of Paul Andrews Sent: Wednesday, August 12, 2009 9:33 PM To: flexcod...@yahoogro ups.com Subject: Re: [flexcoders] *** So you think you know ActionScript? (Read original post first) *** Dave Glasser wrote: Consider this code snippet: var xml:XML = outerinner null/inner /outer; var xmlList:XMLList = xml.inner; trace(xmlList == null); What does the trace statement output, true or false, and why? Please provide an answer without running the code (of course) and, better yet, without consulting any documentation, or any of the other answers that may have been posted already (if you read the list in chronological order.) Pretend it's a job interview question and you have to give it your best shot off the top of your head. And also, if you don't mind, don't top-post your answer, so that if someone does read your answer before the original post, they might get a chance to answer without having seen yours first. xmlList is set to point at somthing which isn't a list, so I think the trace statement will not be reached. That's my 02:31AM thought.. All e4x expressions return an XMLList. It can be empty but is never a null. Besides, the characters. null in a text node are just a string. null in an AS comparison is a special value. The trace will display false. Trace(xmllist. text() ==null ); //would return true. Tracy Spratt, Lariat Services, development services available Like Tracy , I thought it would return false, for the same reason -- that innernull /inner would be interpreted as a string. Was surprised when I ran the code and saw true. What's going on? It seems like the AS decoder recognizes null as a special case.
RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
Ok, if you say so. What is the result of your investigation? It gets kind of complicated because AS does implicit toString() sometimes which can hide what is really happening. Do: trace(xmlList == null); and trace(xmlList == null); return the same result? Tracy Spratt, Lariat Services, development services available _ From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Dave Glasser Sent: Thursday, August 13, 2009 5:22 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Actually, no. It would interpret it as null if it were enclosed in curly braces like this: var xml:XML = outerinner{null}/inner/outer; And even then, null might be converted to its String value, null, as the content of the element. I'd have to try it to know for sure. In the example I gave, the content of the element is a String consisting of the letters n, u, l and l, in that order. In any case, the xmlList variable would reference a non-null XMLList object. That's easily proven by dereferencing it: trace(The length is + xmlList.length()); That would output The length is 1. --- On Thu, 8/13/09, Tracy Spratt tr...@nts3rd.com wrote: From: Tracy Spratt tr...@nts3rd.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 3:49 PM Ah, I see something I missed at first. This example is using literal xml, so the null IS getting interpreted by AS as null and not as a string. I bet it would be different if you did: var xml:XML = XML(outerinner null/inner /outer); Even so I am still surprised because the null should be the text node and the expression should return an XMLList with zero length. Very interesting. Tracy Spratt, Lariat Services, development services available _ From: flexcod...@yahoogro ups.com [mailto:flexcoders@ yahoogroups. com] On Behalf Of jaywood58 Sent: Thursday, August 13, 2009 12:48 PM To: flexcod...@yahoogro ups.com Subject: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** --- In flexcod...@yahoogro ups.com, Tracy Spratt tracy @... wrote: _ From: flexcod...@yahoogro ups.com [mailto:flexcod...@yahoogro ups.com] On Behalf Of Paul Andrews Sent: Wednesday, August 12, 2009 9:33 PM To: flexcod...@yahoogro ups.com Subject: Re: [flexcoders] *** So you think you know ActionScript? (Read original post first) *** Dave Glasser wrote: Consider this code snippet: var xml:XML = outerinner null/inner /outer; var xmlList:XMLList = xml.inner; trace(xmlList == null); What does the trace statement output, true or false, and why? Please provide an answer without running the code (of course) and, better yet, without consulting any documentation, or any of the other answers that may have been posted already (if you read the list in chronological order.) Pretend it's a job interview question and you have to give it your best shot off the top of your head. And also, if you don't mind, don't top-post your answer, so that if someone does read your answer before the original post, they might get a chance to answer without having seen yours first. xmlList is set to point at somthing which isn't a list, so I think the trace statement will not be reached. That's my 02:31AM thought.. All e4x expressions return an XMLList. It can be empty but is never a null. Besides, the characters. null in a text node are just a string. null in an AS comparison is a special value. The trace will display false. Trace(xmllist. text() ==null ); //would return true. Tracy Spratt, Lariat Services, development services available Like Tracy , I thought it would return false, for the same reason -- that innernull /inner would be interpreted as a string. Was surprised when I ran the code and saw true. What's going on? It seems like the AS decoder recognizes null as a special case.
RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
Does anybody want to try to figure out what the E4X spec says it should do? It's certainly possible that the Player implementation of E4X is doing it wrong. Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Tracy Spratt Sent: Thursday, August 13, 2009 3:10 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Ok, if you say so. What is the result of your investigation? It gets kind of complicated because AS does implicit toString() sometimes which can hide what is really happening. Do: trace(xmlList == null); and trace(xmlList == null); return the same result? Tracy Spratt, Lariat Services, development services available From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Dave Glasser Sent: Thursday, August 13, 2009 5:22 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Actually, no. It would interpret it as null if it were enclosed in curly braces like this: var xml:XML = outerinner{null}/inner/outer; And even then, null might be converted to its String value, null, as the content of the element. I'd have to try it to know for sure. In the example I gave, the content of the element is a String consisting of the letters n, u, l and l, in that order. In any case, the xmlList variable would reference a non-null XMLList object. That's easily proven by dereferencing it: trace(The length is + xmlList.length()); That would output The length is 1. --- On Thu, 8/13/09, Tracy Spratt tr...@nts3rd.com wrote: From: Tracy Spratt tr...@nts3rd.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 3:49 PM Ah, I see something I missed at first. This example is using literal xml, so the null IS getting interpreted by AS as null and not as a string. I bet it would be different if you did: var xml:XML = XML(outerinner null/inner /outer); Even so I am still surprised because the null should be the text node and the expression should return an XMLList with zero length. Very interesting. Tracy Spratt, Lariat Services, development services available From: flexcod...@yahoogro ups.com [mailto:flexcoders@ yahoogroups. com] On Behalf Of jaywood58 Sent: Thursday, August 13, 2009 12:48 PM To: flexcod...@yahoogro ups.com Subject: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** --- In flexcod...@yahoogro ups.com/mc/compose?to=flexcoders%40yahoogroups.com, Tracy Spratt tracy @... wrote: _ From: flexcod...@yahoogro ups.com/mc/compose?to=flexcoders%40yahoogroups.com [mailto:flexcod...@yahoogro ups.com/mc/compose?to=flexcoders%40yahoogroups.com] On Behalf Of Paul Andrews Sent: Wednesday, August 12, 2009 9:33 PM To: flexcod...@yahoogro ups.com/mc/compose?to=flexcoders%40yahoogroups.com Subject: Re: [flexcoders] *** So you think you know ActionScript? (Read original post first) *** Dave Glasser wrote: Consider this code snippet: var xml:XML = outerinner null/inner /outer; var xmlList:XMLList = xml.inner; trace(xmlList == null); What does the trace statement output, true or false, and why? Please provide an answer without running the code (of course) and, better yet, without consulting any documentation, or any of the other answers that may have been posted already (if you read the list in chronological order.) Pretend it's a job interview question and you have to give it your best shot off the top of your head. And also, if you don't mind, don't top-post your answer, so that if someone does read your answer before the original post, they might get a chance to answer without having seen yours first. xmlList is set to point at somthing which isn't a list, so I think the trace statement will not be reached. That's my 02:31AM thought.. All e4x expressions return an XMLList. It can be empty but is never a null. Besides, the characters. null in a text node are just a string. null in an AS comparison is a special value. The trace will display false. Trace(xmllist. text() ==null ); //would return true. Tracy Spratt, Lariat Services, development services available Like Tracy , I thought it would return false, for the same reason -- that innernull /inner would be interpreted as a string. Was surprised when I ran the code and saw true. What's going on? It seems like the AS decoder recognizes null as a special case.
RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
--- On Thu, 8/13/09, Tracy Spratt tr...@nts3rd.com wrote: Ok, if you say so. What is the result of your investigation? I just checked, and it does indeed convert null to null. So it's effectively the same with or without the curly braces. The element contains a String 4 characters long. It gets kind of complicated because AS does implicit toString() sometimes which can hide what is really happening. Do: trace(xmlList == null); and trace(xmlList == “null”); return the same result? Surprisingly, the second one doesn't compile. It failed with the error: Error: Comparison between a value with static type XMLList and a possibly unrelated type String. But if it did compile, I would expect it to produce the same result. And just to make sure, I was able to compile and run this: ... var s:* = null trace(xmlList == s); and the output was the same as when comparing xmlList to null.
RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
By my reading, everything seems to be working how it's supposed to work. But how it's supposed to work is very surprising to me. And it's not really E4X that's producing the odd behavior, it's the == operator. I'll go ahead and post the answer and explanation in my next message. --- On Thu, 8/13/09, Gordon Smith gosm...@adobe.com wrote: From: Gordon Smith gosm...@adobe.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 6:54 PM Does anybody want to try to figure out what the E4X spec says it should do? It's certainly possible that the Player implementation of E4X is doing it wrong. Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Tracy Spratt Sent: Thursday, August 13, 2009 3:10 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Ok, if you say so. What is the result of your investigation? It gets kind of complicated because AS does implicit toString() sometimes which can hide what is really happening. Do: trace(xmlList == null); and trace(xmlList == “null”); return the same result? Tracy Spratt, Lariat Services, development services available From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Dave Glasser Sent: Thursday, August 13, 2009 5:22 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Actually, no. It would interpret it as null if it were enclosed in curly braces like this: var xml:XML = outerinner{null}/inner/outer; And even then, null might be converted to its String value, null, as the content of the element. I'd have to try it to know for sure. In the example I gave, the content of the element is a String consisting of the letters n, u, l and l, in that order. In any case, the xmlList variable would reference a non-null XMLList object. That's easily proven by dereferencing it: trace(The length is + xmlList.length()); That would output The length is 1. --- On Thu, 8/13/09, Tracy Spratt tr...@nts3rd.com wrote: From: Tracy Spratt tr...@nts3rd.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 3:49 PM Ah, I see something I missed at first. This example is using “literal” xml, so the null IS getting interpreted by AS as null and not as a string. I bet it would be different if you did: var xml:XML = XML(“outerinner null/inner /outer”); Even so I am still surprised because the null should be the text node and the expression should return an XMLList with zero length. Very interesting. Tracy Spratt, Lariat Services, development services available From: flexcod...@yahoogro ups.com [mailto:flexcoders@ yahoogroups. com] On Behalf Of jaywood58 Sent: Thursday, August 13, 2009 12:48 PM To: flexcod...@yahoogro ups.com Subject: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** --- In flexcod...@yahoogro ups.com, Tracy Spratt tracy @... wrote: _ From: flexcod...@yahoogro ups.com [mailto:flexcod...@yahoogro ups.com] On Behalf Of Paul Andrews Sent: Wednesday, August 12, 2009 9:33 PM To: flexcod...@yahoogro ups.com Subject: Re: [flexcoders] *** So you think you know ActionScript? (Read original post first) *** Dave Glasser wrote: Consider this code snippet: var xml:XML = outerinner null/inner /outer; var xmlList:XMLList = xml.inner; trace(xmlList == null); What does the trace statement output, true or false, and why? Please provide an answer without running the code (of course) and, better yet, without consulting any documentation, or any of the other answers that may have been posted already (if you read the list in chronological order.) Pretend it's a job interview question and you have to give it your best shot off the top of your head. And also, if you don't mind, don't top-post your answer, so that if someone does read your answer before the original post, they might get a chance to answer without having seen yours first. xmlList is set to point at somthing which isn't a list, so I think the trace statement will not be reached. That's my 02:31AM thought.. All e4x expressions return
RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) ***
Well, the == operator produces a lot of interesting behavior. That's why there's a === operator. ☺ Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Dave Glasser Sent: Thursday, August 13, 2009 4:39 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** By my reading, everything seems to be working how it's supposed to work. But how it's supposed to work is very surprising to me. And it's not really E4X that's producing the odd behavior, it's the == operator. I'll go ahead and post the answer and explanation in my next message. --- On Thu, 8/13/09, Gordon Smith gosm...@adobe.com wrote: From: Gordon Smith gosm...@adobe.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 6:54 PM Does anybody want to try to figure out what the E4X spec says it should do? It's certainly possible that the Player implementation of E4X is doing it wrong. Gordon Smith Adobe Flex SDK Team From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Tracy Spratt Sent: Thursday, August 13, 2009 3:10 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Ok, if you say so. What is the result of your investigation? It gets kind of complicated because AS does implicit toString() sometimes which can hide what is really happening. Do: trace(xmlList == null); and trace(xmlList == “null”); return the same result? Tracy Spratt, Lariat Services, development services available From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Dave Glasser Sent: Thursday, August 13, 2009 5:22 PM To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** Actually, no. It would interpret it as null if it were enclosed in curly braces like this: var xml:XML = outerinner{null}/inner/outer; And even then, null might be converted to its String value, null, as the content of the element. I'd have to try it to know for sure. In the example I gave, the content of the element is a String consisting of the letters n, u, l and l, in that order. In any case, the xmlList variable would reference a non-null XMLList object. That's easily proven by dereferencing it: trace(The length is + xmlList.length()); That would output The length is 1. --- On Thu, 8/13/09, Tracy Spratt tr...@nts3rd.com wrote: From: Tracy Spratt tr...@nts3rd.com Subject: RE: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** To: flexcoders@yahoogroups.com Date: Thursday, August 13, 2009, 3:49 PM Ah, I see something I missed at first. This example is using “literal” xml, so the null IS getting interpreted by AS as null and not as a string. I bet it would be different if you did: var xml:XML = XML(“outerinner null/inner /outer”); Even so I am still surprised because the null should be the text node and the expression should return an XMLList with zero length. Very interesting. Tracy Spratt, Lariat Services, development services available From: flexcod...@yahoogro ups.com [mailto:flexcoders@ yahoogroups. com] On Behalf Of jaywood58 Sent: Thursday, August 13, 2009 12:48 PM To: flexcod...@yahoogro ups.com Subject: [flexcoders] Re: *** So you think you know ActionScript? (Read original post first) *** --- In flexcod...@yahoogro ups.com, Tracy Spratt tracy @... wrote: _ From: flexcod...@yahoogro ups.com [mailto:flexcod...@yahoogro ups.com] On Behalf Of Paul Andrews Sent: Wednesday, August 12, 2009 9:33 PM To: flexcod...@yahoogro ups.com Subject: Re: [flexcoders] *** So you think you know ActionScript? (Read original post first) *** Dave Glasser wrote: Consider this code snippet: var xml:XML = outerinner null/inner /outer; var xmlList:XMLList = xml.inner; trace(xmlList == null); What does the trace statement output, true or false, and why? Please provide an answer without running the code (of course) and, better yet, without consulting any documentation, or any of the other answers that may have been posted already (if you read the list in chronological order.) Pretend it's a job interview question and you have to give it your best shot off the top of your head. And also, if you don't mind, don't top-post your answer, so that if someone does read your answer before the original post, they might get a chance to answer without having seen yours first. xmlList is set to point at somthing which isn't a list, so I think the trace statement will not be reached. That's my 02:31AM thought.. All e4x expressions return