forked from everaldo/ruby-em-100-exemplos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
088_inclua_modulos_nas_classes.rb
71 lines (55 loc) · 1.1 KB
/
088_inclua_modulos_nas_classes.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 10/06/2016 - Everaldo Gomes - [email protected]
#
# 088 - Inclua módulos nas classes
#
#
# O comando require permite carregar outros arquivos.
# Se você não especificar um caminho absoluto, Ruby
# procurará nos diretórios contidos na variável
# $LOAD_PATH.
#
# Vamos carregar o arquivo do exemplo anterior e
# incluir os métodos na classe
#
#
#
#
#
#
#
#module MeuModulo
# def self.metodo_do_modulo
# puts "Oi, sou um método"
# end
#
# def MeuModulo.tambem_sou_metodo_do_modulo
# puts "Eu também sou um método do módulo"
# end
#end
require './087_um_pouco_sobre_modulos'
class UmaClasse
include MeuModulo
end
#
# Módulo é um Ancestral de UmaClasse
#
p UmaClasse.ancestors
begin
UmaClasse.metodo_do_modulo
rescue NoMethodError => ex
puts "Somente os métodos de instância do módulo são inclusos"
end
#
# Você pode incluir os métodos de instância de um Módulo
# como métodos de classe de uma Classe utilizando
# extend
#
module OutroModulo
def metodo2
"Vou virar um método de classe"
end
end
class OutraClasse
extend OutroModulo
end
puts OutraClasse.metodo2