In my own Smalltalk, a string understands a little over two thousand selectors, of which about 440 are specific to strings, the others being shared by other sequences. That's quite a lot to search through. As it happens, I *do* have a 'searching' category and the #findString:[startingAt:][ignoringCase:][ifAbsent:] methods are in it. The methods defined in the ANSI Smalltalk standard are #indexOfSubCollection:startingAt:[ifAbsent:] and are quite easy to find once you recall that methods for searching in a sequence generally have 'find' or 'indexOf' in their name.
It is surprisingly hard to keep categories consistent. If there is a way to say "here I am browsing method M in category G of class C, is there an ancestor of C that puts the selector of M in a different category?" I would love to know it. (Adding such a code critic to my Smalltalk is on the TODO list.) On Tue, 26 Feb 2019 at 00:20, Tim Mackinnon <[email protected]> wrote: > I always struggle (even after years of casually using smalltalk) to find > the String methods that do the heavy lifting (and are comparable to other > languages). The methods are normally there, but they often have names that > don’t compare well with other languages. > > I think that what doesn’t help is the categorisation of methods in String > - for example - if I want to do some searching in a String - why is > #findString: in ‘accessing’ - I totally didn’t think to look in there. To > be honest, I really wanted a protocol called ‘searching’ - but its not > there? > > I find the protocols in the system to be pretty bad in all honesty. Its a > good idea, but I don’t think its clear on whether its protocol, or > category. And if the former - where are the tools to help ensure things > conform to a protocol? If the latter - where are the useful, commonly used > categories? > > Are there any plans to do anything in this area - or is it just a lump it > scenario? > > Tim >
