|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
could any one me out to solve this.
Following is a function java Actually the following function has a character array as a return type public char[] getTextCharacters(int [] holderForStartAndLength) { } Could any one me to do the same in ruby Thank you in advance -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Hi,
> public char[] getTextCharacters(int [] holderForStartAndLength) > { > } > > Could any one me to do the same in ruby Oh sure! def getTextCharacters(holder_for_start_and_length) end > Actually the following function has a character array as a return type It doesn't matter. Ruby is a dynamic language. Please check out these slides: http://onestepback.org/articles/10things/ Cheers, Peter ___ http://www.rubyrailways.com http://scrubyt.org |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
2007/11/21, Peter Szinek <peter@rubyrailways.com>:
> Hi, > > > public char[] getTextCharacters(int [] holderForStartAndLength) > > { > > } This won't even compile because there is no "return" statement. Also, using an array to pass two values is at best sub optimal. And since you do not provide any details about the class at hand nobody can really you. > > Could any one me to do the same in ruby > > Oh sure! > > def getTextCharacters(holder_for_start_and_length) > end LOL Actually, we can make this even *more* rubyish: def get_text_characters holder_for_start_and_length end :-) Cheers robert -- use.inject do |as, often| as.you_can - without end |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Robert Klemme wrote:
> 2007/11/21, Peter Szinek <peter@rubyrailways.com>: >> Hi, >> >>> public char[] getTextCharacters(int [] holderForStartAndLength) >>> { >>> } > > This won't even compile because there is no "return" statement. Also, > using an array to pass two values is at best sub optimal. And since > you do not provide any details about the class at hand nobody can > really you. > >>> Could any one me to do the same in ruby >> Oh sure! >> >> def getTextCharacters(holder_for_start_and_length) >> end > > LOL > > Actually, we can make this even *more* rubyish: > > def get_text_characters holder_for_start_and_length > end Ah, thanks Robert :-) The most trivial tasks are the easiest to screw up, right? ___ http://www.rubyrailways.com http://scrubyt.org |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Nov 21, 2007, at 02:00 , Martin Durai wrote: > Actually the following function has a character array as a return type > > public char[] getTextCharacters(int [] holderForStartAndLength) > { > } Having done far too much of this recently, my guess is it'll look something like: > def get_text_characters > result = [] > > # get the characters and start from whatever... > > return result, start > end I ignored the holderForStartAndLength because the name hints that they are a stupid java hack for not having rich return values. In get_text_characters we don't bother with length because our array (or string... depends on how you actually want to use it) knows it's length and we return the start offset with it. You'd call it like: > chars, offset = get_text_characters |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Hi peter,
i have attached my java code which i have to port to ruby. could you me with this public char[] getTextCharacters(int [] holderForStartAndLength) { if( eventType == TEXT ) { if(usePC) { holderForStartAndLength[0] = pcStart; holderForStartAndLength[1] = pcEnd - pcStart; return pc; } else { holderForStartAndLength[0] = posStart; holderForStartAndLength[1] = posEnd - posStart; return buf; } } else if( eventType == START_TAG || eventType == END_TAG || eventType == CDSECT || eventType == COMMENT || eventType == ENTITY_REF || eventType == PROCESSING_INSTRUCTION || eventType == IGNORABLE_WHITESPACE || eventType == DOCDECL) { holderForStartAndLength[0] = posStart; holderForStartAndLength[1] = posEnd - posStart; return buf; } else if(eventType == START_DOCUMENT || eventType == END_DOCUMENT) { //throw new XmlPullParserException("no content available to read"); holderForStartAndLength[0] = holderForStartAndLength[1] = -1; return null; } else { throw new IllegalArgumentException("unknown text eventType: "+eventType); } // String s = getText(); // char[] cb = null; // if(s!= null) { // cb = s.toCharArray(); // holderForStartAndLength[0] = 0; // holderForStartAndLength[1] = s.length(); // } else { // } // return cb; } All these code comes unde java version of pull parser Robert Klemme wrote: > 2007/11/21, Peter Szinek <peter@rubyrailways.com>: >> Hi, >> >> > public char[] getTextCharacters(int [] holderForStartAndLength) >> > { >> > } > > This won't even compile because there is no "return" statement. Also, > using an array to pass two values is at best sub optimal. And since > you do not provide any details about the class at hand nobody can > really you. > >> > Could any one me to do the same in ruby >> >> Oh sure! >> >> def getTextCharacters(holder_for_start_and_length) >> end > > LOL > > Actually, we can make this even *more* rubyish: > > def get_text_characters holder_for_start_and_length > end > > :-) > > Cheers > > robert -- Posted via http://www.ruby-forum.com/. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
On Nov 21, 2007 11:23 AM, Ryan Davis <ryand-ruby@zenspider.com> wrote:
> > On Nov 21, 2007, at 02:00 , Martin Durai wrote: > > > Actually the following function has a character array as a return type > > > > public char[] getTextCharacters(int [] holderForStartAndLength) I do not like this ---------------------------------^ def get_text_chars start=0, length=1 IOW you cannot port Java to Ruby, it will remain Java in disguise. Robert -- what do I think about Ruby? http://ruby-smalltalk.blogspot.com/ |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
2007/11/21, Martin Durai <martin@angleritech.com>:
> Hi peter, > > i have attached my java code which i have to port to ruby. could you > me with this > > public char[] getTextCharacters(int [] holderForStartAndLength) > { > if( eventType == TEXT ) { > if(usePC) { > holderForStartAndLength[0] = pcStart; > holderForStartAndLength[1] = pcEnd - pcStart; > return pc; > } else { > holderForStartAndLength[0] = posStart; > holderForStartAndLength[1] = posEnd - posStart; > return buf; > > } > } else if( eventType == START_TAG > || eventType == END_TAG > || eventType == CDSECT > || eventType == COMMENT > || eventType == ENTITY_REF > || eventType == PROCESSING_INSTRUCTION > || eventType == IGNORABLE_WHITESPACE > || eventType == DOCDECL) > { > holderForStartAndLength[0] = posStart; > holderForStartAndLength[1] = posEnd - posStart; > return buf; > } else if(eventType == START_DOCUMENT > || eventType == END_DOCUMENT) { > //throw new XmlPullParserException("no content available to > read"); > holderForStartAndLength[0] = holderForStartAndLength[1] = > -1; > return null; > } else { > throw new IllegalArgumentException("unknown text eventType: > "+eventType); > } > // String s = getText(); > // char[] cb = null; > // if(s!= null) { > // cb = s.toCharArray(); > // holderForStartAndLength[0] = 0; > // holderForStartAndLength[1] = s.length(); > // } else { > // } > // return cb; > } > > All these code comes unde java version of pull parser First of all I would create a class for the return values, like TextSubRange = Struct.new :text, :start, :end Then I would change all the if (x==..||x==...) to use a case statement. Btw, I would do the same to the Java code (i.e. create another class and use "switch"). Cheers robert -- use.inject do |as, often| as.you_can - without end |
|
![]() |
| Outils de la discussion | |
|
|