ɉɨɜɬɨɪɧɨɟ ɢɫɩɨɥɶɡɨɜɚɧɢɟ
¢ÃÁ´À³Ò ÂÁ¸º·½³
ɋɨɯɪɚɧɢɬɟ ɫɧɨɜɚ ɮɚɣɥ vsearch.py ɡɚɬɟɦ ɧɚɠɦɢɬɟ ) ɱɬɨɛɵ ɡɚɝɪɭɡɢɬɶ ɮɭɧɤɰɢɸ
search4letters ɜ ɨɛɨɥɨɱɤɭ
ȼɨɡɜɪɚɳɚɟɬ ɦɧɨɠɟɫɬɜɨ ɛɭɤɜ ɢɡ µOHWWHUV¶ ɧɚɣɞɟɧɧɵɯ ıŚŘŗŔťŐŜŒśŎ
ɜ ɭɤɚɡɚɧɧɨɣ ɮɪɚɡɟ «ŋŚhśelřpŗ»ŎŖŠŖśŜŗŧŊŤŝŜŖœşőŧ
őŘŖŗŝŔŜŗŠřőŕśʼnťşőŚŧŘřʼnŋŗŠŖŜŧ
ŗ «search4letters»
īŚŎ Ŧśő
ŘřőŕŎřŤ
řʼnŊŗśʼnŧś
śʼnœ œʼnœ ŕŤ
ő ŗŏőōʼnŔő
Функция search4letters получилась более универсальной, чем search4vowels, потому что
принимает любое множество букв и ищет их в указанной фразе, а не только буквы a, e, i, o,
u. Поэтому новая функция более полезная, чем search4vowels. Теперь представим, что
у нас есть большая кодовая база, в которой search4vowels используется повсеместно. Было
принято решение отказаться от search4vowels и заменить ее функцией на search4letters,
потому что нет смысла поддерживать обе функции, если search4letters может то же, что
и search4vowels. Простой поиск с заменой не даст желаемого результата, потому что с каждой
заменой необходимо также добавить второй аргумент, который всегда будет строкой ‘aeiou’,
чтобы поведение search4letters полностью соответствовало поведению search4vowels.
Вот, например, вызов функции с одним аргументом.
search4vowels("Don't panic!") ǥȟȏȒ ȅȟ țȗȈȉȕȑȒ ȉȕȏȌ ȅȟ
Теперь нам нужно заменить его вызовом с двумя 3\WKRQ ȓȒȋȆȒȏȣȏ ȋȄȈȄȆȄȖȠ ȋȑȄțȉȑȌȣ
аргументами (автоматизированно это сделать нелегко). ȓȒ ȗȐȒȏțȄȑȌȢ DZȒ ȣ ȓȒȑȌȐȄȢ țȖȒ
ȡȖȒ ȖȒȏȠȎȒ ȐȉțȖȄ«
search4letters("Don't panic!", 'aeiou')
Было бы неплохо каким-то способом определить значение
по умолчанию для второго аргумента search4letters, которое
использовалось бы в отсутствие альтернативного значения.
Если мы сможем определить значение по умолчанию ‘aeiou’,
то легко сможем применить операцию поиска с заменой.