11.2.8. Опознание параметров, заданных по умолчанию
11.2.8. Опознание параметров, заданных по умолчанию
В 2004 году Ян Макдональд (Ian Macdonald) задал в списке рассылки вопрос: «Можно ли узнать, был ли параметр задан вызывающей программой или взято значение по умолчанию?» Вопрос интересный. Не каждый день он возникает, но от того не менее интересен.
Было предложено по меньшей мере три решения. Самое удачное и простое нашел Нобу Накада (Nobu Nakada). Оно приведено ниже:
def meth(a, b=(flag=true; 345))
puts "b равно #{b}, a flag равно #{flag.inspect}"
end
meth(123) # b равно 345, a flag равно true
meth(123,345) # b равно 345, a flag равно nil
meth(123,456) # b равно 456, a flag равно nil
Как видим, этот подход работает даже, если вызывающая программа явно указала значение параметра, совпадающее с подразумеваемым по умолчанию. Трюк становится очевидным, едва вы его увидите: выражение в скобках устанавливает локальную переменную flag в true, а затем возвращает значение по умолчанию 345. Это дань могуществу Ruby.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Поиск заданных комбинаций символов
Поиск заданных комбинаций символов Тестирование производительности путем выполнения поиска определенных текстовых шаблонов в содержимом файлов производилось с использованием трех различных методов, что позволило оценить сравнительную эффективность многопоточного
2.10.3. Пароли по умолчанию
2.10.3. Пароли по умолчанию Многие сервисы во время установки прописывают пароли по умолчанию. В ОС Linux эта проблема стоит особо остро, потому что программы инсталляции используют RPM-пакеты и чаще всего даже не предлагают их сменить. Я бы на месте разработчиков вообще
4.1.4. Права по умолчанию
4.1.4. Права по умолчанию Когда пользователь создает новый файл или директорию, то им назначаются права по умолчанию. Давайте разберем это на примере. Для создания файла выполним команду ls и перенаправим вывод в файл:ls -al >> testfileТеперь проверим права на этот файл с помощью
4.11.1. Фильтр по умолчанию
4.11.1. Фильтр по умолчанию Исходя из принципа всеобщего запрета, в качестве правила по умолчанию мы должны запретить любые действия. Изначально в Linux все разрешено, а это безопасно только для отдельно стоящего сервера, который даже не подключен к сети. Проверьте ваши
8.6.2 Маршрут по умолчанию
8.6.2 Маршрут по умолчанию Первой строкой в таблице 8.1 стоит маршрут по умолчанию. В ней указано, что, не найдя совпадения со строкой таблицы, трафик должен быть направлен на ближайший соседний маршрутизатор с адресом
8.7.2 Маршрут по умолчанию
8.7.2 Маршрут по умолчанию Первой строкой в таблице стоит маршрут по умолчанию. Если не найдено ни одного совпадения, трафик будет передан на ближайший маршрутизатор с адресом
2.31. Удаление заданных символов
2.31. Удаление заданных символов Метод delete удаляет из строки те символы, которые включены в список, переданный в качестве параметра:s1 = "To be, or not to be"s2 = s1.delete("b") # "To e, or not to e"s3 = "Veni, vidi, vici!"s4 = s3.delete(",!") # "Veni vidi vici"Этот параметр подчиняется тем же правилам, что и параметр метода count
8.1.15. Удаление заданных элементов из массива
8.1.15. Удаление заданных элементов из массива В Ruby легко удалить элементы из массива - для этого даже существует много способов. Чтобы удалить элемент с известным индексом, достаточно вызвать метод delete_at:a = [10, 12, 14, 16, 18]a.delete_at(3) # Возвращает 16.# а равно [10, 12, 14, 18]a.delete_at(9) #
Способ передачи параметров, используемый по умолчанию
Способ передачи параметров, используемый по умолчанию По умолчанию параметр передается в функцию по значению. Попросту говоря, если не определить для аргумента модификатор, то в функцию передаётся копия переменной.// По умолчанию аргументы передаются по значению.public static
Переопределение элементов System.Object, заданных по умолчанию
Переопределение элементов System.Object, заданных по умолчанию Хотя заданное по умолчанию поведение System.Object может оказаться вполне приемлемым в большинстве случаев, вполне обычным для создаваемых вами типов будет переопределение некоторых из унаследованных методов. В главе
14.2.1. Конструктор по умолчанию
14.2.1. Конструктор по умолчанию Конструктором по умолчанию называется конструктор, который можно вызывать, не задавая аргументов. Это не значит, что такой конструктор не может принимать аргументов; просто с каждым его формальным параметром ассоциировано значение по
Настройка параметров стен по умолчанию
Настройка параметров стен по умолчанию Окно установки параметров стены Wall Default Settings (Настройки параметров стен по умолчанию) (рис. 5.3) вызывается нажатием кнопки – первой кнопки информационной палитры.Рассмотрим основные разделы данного окна, в которых расположены
Задание параметров функции по умолчанию
Задание параметров функции по умолчанию Еще одна интересная возможность, которая появляется у вас после перехода от Си к Си++, позволяет при определении функций задавать некоторые ее параметры по умолчанию. Вызывая такую функцию, можно не указывать параметры, заданные по
4.5.3. Изменение настроек, заданных по умолчанию
4.5.3. Изменение настроек, заданных по умолчанию По умолчанию для отображения и скрытия рабочей области приложения Dashboard используется клавиша <F12>. Но умолчания можно изменить в окне мини-утилиты Expos? и Spaces на вкладке Expos? (рис. 4.64). Для открытия этого окна следует вызвать
Фултон Хэл
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉