On Sunday, 31 July 2022 at 07:43:06 UTC, Salih Dincer wrote:
On Sunday, 31 July 2022 at 00:58:47 UTC, pascal111 wrote:
Another version of the program:
https://github.com/pascal111-fra/D/blob/main/proj04.d
I have a few more suggestions for you; Among them the first is
on the following sample:
```d
auto sentence_x = "she has six oxen";
auto noNeedTrim = sentence_x.d_strtok(" ");
foreach(token; noNeedTrim)
{
//token = token.strrtrim;
if(token.canFind("s"))
{
assert(token.length == 3);
} else token.writeln; // oxen
}
```
I don't know how "assert" works, if you explained it I'll be able
to get the idea of your suggestion to apply the appropriate
changes on my code.
But if it's because of typos, it's ok. Lets continue...
I think "typos" are mistakes of typing? I'm not sure.
Why are you using const for strings? After all, they are
protected by immutable. Moreover, since you do not use refs,
copies are taken in every function and also you have created
extra copy for results.
```d
enum str = "five hundred twelve";
auto test = str.strltirim;
assert(test == "five hundred twelve");
string strltrim(const string ch)
{
string ch_cpy=ch;
while(ch_cpy.strleft(1)==" ")
ch_cpy=ch_cpy.strdel(0,1);
return ch_cpy;
}
```
There are also nicer ways to delete spaces in a text. Have you
ever tried using the default arguments and auto?
```d
//string[] d_strtok(const string ch, const string delim)
auto d_strtok(string ch, string delim = " ")//*/
{
import std.functional : not; // [bonus]
string[] tokens = ch.
splitter!(c => delim.canFind(c)).
filter!(not!empty).array;
return tokens;
}
```
Functions may optionally define default arguments. This avoids
the tedious work of declaring redundant overloads.
I think you are right, I'll add a default argument in
"d_strtok".
**[bonus]** And using selective imports where necessary is also
a nice feature of D.
Beginners are reading my library, so I have some limitations to
provide 'em understood code, so if I'll apply a new D syntax,
I'll explain it in a video before providing the beginners the
code with the new syntax.
SDB@79