Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Text width a length
#11
Składnia w porządku, ale dla lepszej czytelności powinieneś to odpowiednio sformatować/ułożyć.
https://pl.wikipedia.org/wiki/Formatowanie_kodu

Jeśli lubisz to pobaw się z optymalizacją, np.

Code:
for(local i = 0; i < text.len(); i++){
*.len() zlicza Ci prawdopodobnie za każdym razem długość tekstu, więc wcześniej możesz ją przypisać do zmiennej i nie zliczać za każdą iteracją.
Code:
local textLen = text.len();
for(local i = 0; i < textLen; i++){
itd.


Do szukania spacji masz dedykowaną funkcję https://electricimp.com/docs/squirrel/string/find/. Albo ciąć tekstu też za każdym razem nie musiałeś, z wykorzystaniem tablicy byłoby szybciej.
Najlepiej wyrób sobie nawyk odpowiedniego formatowania a jeśli masz już dużo nieułożonych fragmentów to skorzystaj z jakiegoś narzędzia, np. http://codebeautify.org/cpp-formatter-beautifier, indent 4.
Reply
#12
Możesz iterować po znakach, a nie wycinasz za każdym razem je ze stringa.
Iterowanie przez znaki jest znacznie szybsze. Tutaj dwa przykłady:
Squirrel Script
  1. local text = "test";
  2.  
  3. for (local i = 0; i < text.len(); ++i)
  4. print(text[i].tochar())
  5.  
  6. foreach (znak in text)
  7. print(znak.tochar());



Konstrukcja dowolna, foreach jest ładniejszy ale nie masz indexu Smile Musisz sobie wtedy tworzyć sam zmienną i ją iterować jeśli chcesz wiedzieć, który to znak.

(09.05.2017, 00:26)Marcel Wrote: Jeśli lubisz to pobaw się z optymalizacją, np.

Code:
for(local i = 0; i < text.len(); i++){
*.len() zlicza Ci prawdopodobnie za każdym razem długość tekstu, więc wcześniej możesz ją przypisać do zmiennej i nie zliczać za każdą iteracją.
Nope, bez obaw nie zlicza Wink
Można sobie sprawdzić źródła i znaleźć to:
Code:
SQInteger Len() { return _size; }
Reply
#13
Ok czyli wczoraj brakowało mi tochar()

Wybrałem przykład z for()
Dzieki. Nie zamykać mimo to. Smile

Edit: A, zastanawiam się jeszcze, czy jest jakiś sposób na upiększenie tego typu brzydoty:



Code:
if(_chars_nr*2<text.len()&&this._textTable[0].heightPx*this._textTable.len()<tex_height)
{
this._textTable.append(Draw(0, 0, text.slice(_chars_nr,   _chars_nr*2)));
print("1");
}else if(text.len()>_chars_nr&&_chars_nr*2>text.len()&&this._textTable[0].heightPx*this._textTable.len()<tex_height)
{
this._textTable.append(Draw(0, 0, text.slice(_chars_nr, text.len())));
print("2");
}else{print("else");}


if(_chars_nr*3<text.len()&&this._textTable[0].heightPx*this._textTable.len()<tex_height)
{
this._textTable.append(Draw(0, 0, text.slice(_chars_nr*2, _chars_nr*3)));print("1");
}else if(text.len()>_chars_nr*2&&_chars_nr*3>text.len()&&this._textTable[0].heightPx*this._textTable.len()<tex_height)
{
this._textTable.append(Draw(0, 0, text.slice(_chars_nr*2, text.len())));
print("2");
}else{print("else");}

Ni cholery nie mam pomysłu jak łatwiej obliczac chars, no i muszę nadać odpowiednie warunki, a może to wcale nie wygląda najgorzej? :F
Reply
#14
Źle sformatowales, w sensie spakowales dla zmniejszenia kb i nic nie widać. Smile Zaznacz beautiful czy coś w tym stylu.
Reply
#15
Nie ogarniam o co chodzi z tym spakowaniem, ale miałem to w jednej linii, podzieliłem na linie, więc teraz powinno byc jasniej.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)