Ruby/Подробнее о методах: различия между версиями

Содержимое удалено Содержимое добавлено
м fix homoglyphs: convert Cyrillic characters in [С]onnection to Latin
орфография
Строка 1:
== Подробнее о методах ==
 
Все функции в Ruby являются методами, то есть свойственны обьектамобъектам. При программировании на это можно не обращать внимания, поскольку любая программа на Ruby уже является определением класса. У методов могут быть обязательные или необязательные параметры. Методы разграничиваются фигурными скобками или ключевыми словами <code>def</code> и <code>end</code>.
 
=== Создание метода ===
Строка 83:
p "Array has something" if arr.any?</source>
 
Методы с восклицательным знаком на конце меняют обьектобъект, к которому привязаны.
 
<source lang="ruby">string = " Some string with spaces "
Строка 188:
 
* поддержание индекса в цикле,
* забота об итераторах как отдельных обьектахобъектах,
* закрытие ресурса после его использования,
* забота о контексте, в котором выполняется операция.
Строка 430:
==== Как добавить метод к массиву/строке/венику? ====
 
Важно помнить, что в Ruby все типы являются обьектамиобъектами, даже сами классы. Каждый класс до конца выполнения программы остаётся открытым, а это значит, что в любой тип можно добавить собственные методы (или изменить поведение существующих). Каждый класс можно определять постепенно, в нескольких частях программы:
 
<source lang="ruby">class Broom
Строка 464:
Операция расширения класса (добавление нового метода к существующему) по сути не отличается от создания нового класса.
 
У обьектовобъектов в Ruby есть методы класса и методы экземпляра. В нашем примере <code>consonants</code> — это именно метод экземпляра. При создании нового класса или изменении существующего создать метод класса можно, начав его имя с имени класса или с <code>self</code> и точки:
 
<source lang="ruby">class String
Строка 502:
будут удалены.}}
 
Если к классу надо добавить много методов сразу, то при описании класса можно выйти на уровень его обьектаобъекта-класса. Это свойство в Ruby называется ''eigenclass'' ({{нем|eigen}} — свой, особый). Подозревая, что многие из читателей незнакомы с математическим понятием [[w:Собственные вектора, значения и пространства|собственного значения/вектора/пространства]], мы кратко и по-программистски назовём eigenclass ''айгенклассом''. Аналогичные концепции в других языках, например в Smalltalk, от которого Ruby наследовал свою объкетнуюобъектную идеологию, называются также ''метаклассами''.
 
Добавим к классу <code>File</code> метод <code>myself</code>: