Jaki jest najszybszy / najbardziej wydajny sposób liczenia linii w Rebol?
Podano ciągstring
, jaki jest najszybszy / najbardziej efektywny sposób na zliczanie linii? Przyjmie najlepsze odpowiedzi na każdy smak Rebol. Pracowałem przy założeniu, żeparse [some [thru]]
kombinacja była najszybszym sposobem na przejście ciągu, ale nie wiem tego na pewno, dlatego zwracając się do SO:
count-lines: func [string [string!] /local count][
parse/all string [
(count: 1) some [thru newline (count: count + 1)]
]
count
]
Lub:
count-lines: func [string [string!] /local count][
count: 0
until [
count: count + 1
not string: find/tail string newline
]
count
]
A co z licznikami? Jak wydajne jest powtarzanie?
count-lines: func [string [string!]][
repeat count length? string [
unless string: find/tail string newline [
break/return count
]
]
]
Aktualizacja: liczba linii zależy od zasady edytora tekstu:
Pusty dokument nadal ma liczbę linii jednego. Więc:
>> count-lines ""
== 1
>> count-lines "^/"
== 2