Ruby�Ǽ���γ����⥸�塼����ɤ߹�����ˡ - include �� extend �� module_function - (�ߢώ�)o�� sasata299's blog���ɤ�Ǥơ��⤷�����������äȸ��򤬤���Τ��ʤȻפä��Τ�require��include��extend���ä�

require��Kernel�⥸�塼��Υ᥽�å�

Ruby�dz����饤�֥����ɤ߹���ˤϡ�require �����Ѥ��ޤ���
Ruby�Ǽ���γ����⥸�塼����ɤ߹�����ˡ - include �� extend �� module_function - (�ߢώ�)o�� sasata299's blog

����Ϥ����̤ꡣ��äȶ���Ū�˸����ȡ�require�ϰ����Υե�����̾��Ruby�ե�������ɤ߹���Ǽ¹Ԥ���᥽�åɤǤ������������Хѥ����ä��Ȥ��Ϥ��Υե�����򡢤����Ǥʤ����ϥ����ɥѥ���ͥ���̾�̤���é�äƺǽ�˸��Ĥ��ä��ե����������ɤ��롣�ǡ���ĥ�ҤޤǴޤ�ƽ񤤤Ƥ�����Ϥ��Υե�����򡢤����Ǥʤ�����.rb�⤷����.so�Τ�Τ�����ɤ��뤽���ʡ�require��¾��load�Ȥ����᥽�åɤ⤢�äƤ���Ϥ�뤳�Ȥ�Ʊ�������ɡ�require�ξ���ɤ߹���Τϰ��٤��������ɡ�load�ξ���̵�����ɤ߹������ʤΤǥ饤�֥��Ȥ����ɤ߹���Ȥ���require��Ȥ���

include��Module���饹�Υ᥽�å�

�������⥸�塼����ɤ߹���Ȥ��ˤ� include ���ʤ��Ȥ����ʤ����Ȥ������Ȥ�ֽ��Ƥ�Ruby�פ�Ƥ���Τä��Τ���®��Ƥߤޤ�����
Ruby�Ǽ���γ����⥸�塼����ɤ߹�����ˡ - include �� extend �� module_function - (�ߢώ�)o�� sasata299's blog

����ϼ㴳�ְ㤤��include�ϥ⥸�塼���Ȥ���ä��������ʤ��Τǡ�

����Ĵ�٤���̡��ɤ��� include �äƤ��Υե�������ɤ߹��ߤϤ��Ƥ���ʤ��äݤ��Ǥ��͡������ޤǤ�ե�������ɤ߹��ߤ� require ��ô���äݤ��Ǥ���
Ruby�Ǽ���γ����⥸�塼����ɤ߹�����ˡ - include �� extend �� module_function - (�ߢώ�)o�� sasata299's blog

�äƤ����Τ���������

���㤢include�äƲ��ʤ����äƤ��Ȥʤ�����ɡ�����ϡ������˥⥸�塼����ꡢinclude�������饹��include���줿�⥸�塼����������ɲä����פȤ������Ȥ򤷤Ƥ���롢�Ȥ���Module���饹�Υ᥽�åɡ��㤨�С����륯�饹Bar��Foo�⥸�塼���include����ȡ������ѡ����饹(Bar������Ѿ����Ƥʤ���а��ۤΥ����ѡ����饹Object)�ȤηѾ��ط��δ֤�Foo�⥸�塼��򺹤���������᥽�åɤ䥯�饹�ѿ���õ���Ȥ��ˡ�Bar�򸫤뢪̵���ä���Foo�򸫤뢪̵���ä���Object�򸫤뢪̵���ä���Kernel�򸫤뢪����Ǥ�̵���ʤ�̵���פȤ������ˤ��Ƥ���롣�Ĥޤꤳ���������ȡ�

class Bar
  include Foo
end
Bar.ancestors
# ancestors�ϥ����ѡ����饹�ȥ��󥯥롼�ɤ��Ƥ�⥸�塼���ͥ���̽���֤��᥽�å�
# => [Bar, Foo, Object, Kernel]

�ǡ��⥸�塼������������include�����ꤹ��ȡ������������Ȥˤʤ롣

  • Hoge�⥸�塼������self.hoge��������줿�᥽�åɤϡ�Hoge.hoge�Ȥ��ƻȤ���
  • Hoge�⥸�塼������fuga�Ȥ���������줿�᥽�åɤϡ�Hoge.fuga�Ȥ��Ƥ��Ȥ��ʤ�
  • include����ȡ�include�������饹�����󥹥��󥹤����fuga���Ȥ���褦�ˤʤ�

��������̤ηѾ��ط��ˤ��륵�֥��饹�ȥ����ѡ����饹�Τ��Ȥ�ͤ���Ȳ��Τ��ȤϤʤ���

  • def self.hoge�����饹��hoge�Ȥ����᥽�åɤ��������
  • def fuga�����Υ��饹�Υ��󥹥��󥹤�fuga�Ȥ����᥽�åɤ��������
  • ���饹��������줿hoge�᥽�åɤ�Klass.hoge�Ȥ������ǸƤ٤�
  • �����ѡ����饹��������줿fuga���󥹥��󥹥᥽�åɤϥ��֥��饹�Υ��󥹥��󥹤����fuga�Ȥ������ǸƤ٤�

�ǡ����ΡַѾ��פ���ʬ���include����פ��ɤߴ�����Ȥ��륯�饹����⥸�塼���include�����Ȥ��ε�ư��ʬ����Ȼפ���Ʊ���褦�˿����񤦡�

�ȥåץ�٥�Ǥ�include

�ǡ������ޤǤϡ֥��饹���⥸�塼���include�����Ȥ��פ��á����ä�����Ϥ���äȤ�䤳�������������Ǥϥȥåץ�٥�ǥ⥸�塼���include���Ƥ������ɡ�����Ϥ���ä����򤤤��Ȥˤʤ롣

�ȥåץ�٥�äƲ��ʤ���ä��äʤ�����ɡ��ȥåץ�٥롢�Ĥޤ�classʸ��moduleʸ��֥��å����椸��ʤ������ֳ�¦�ǽ񤤤�Ruby�����ɤϡ�main�Ȥ������ۤ�Object���饹�Υ��󥹥��󥹤�self�Ǥ��롣�ʤΤǡ��ȥåץ�٥�Dz��餫�Υ᥽�åɤ�ƤӽФ��ȡ�self.method���Ĥޤ�main���֥������ȤΥ᥽�åɤ�ƤӽФ����ˤʤ롣�ǡ���������̯�ʤ�����ɡ����㤢�ȥåץ�٥��include�Ȥ���ä���def self.hoge�����������Ĥ��ȥåץ�٥��hoge�ˤʤꡢdef fuga�����������Ĥ�main���֥������ȤΥ��󥹥��󥹤�fuga�ˤʤꤽ���ʤ�Τ����ɡ������Ϥʤ�ʤ�������main���֥������Ȥ�Object���饹�Υ��󥹥��󥹤ʤΤˡ�����Τ���˥��󥹥��󥹤äƲ������̣�狼���衢�ä��äǤ��衣

�ºݤϤɤ��ʤäƤ뤫�Ȥ����ȡ�def self.hoge����������᥽�åɤ����ƤΥ��饹�Υ��饹�᥽�åɤˤʤꡢdef hoge����������᥽�åɤ����ƤΥ��󥹥��󥹥᥽�åɤˤʤ����ʤΤǡ��������Υ����ɤ�hello�Ϥ�Ǥ���Object���饹�Υ��󥹥��󥹤Ǥ���Ȥ�����main���֥������ȤΥ᥽�åɤˤʤ�ޤ�������debug��Zozom.debug�Ȥ��ƸƤ٤�Τߤʤ餺�̤ʥ��饹���äƤ��㤨��Yakitori.debug�ߤ����˸Ƥ٤롢�Ȥ����äˤʤ롣��䤳������

main���֥������Ȥ���include����

����ϲ��ʤ�������Τɤ��������Ȥ��IJ��ϡ������Ȥ�Ǥ�ʤ����Ƨ�߹���Ǥ��ޤä��Τ��Ĥȸ��������Ȥ��������ɡ��ޤ��¤ϴ�ñ���ä��ä��ꤹ�롣classʸ�����include��Module���饹�Υ��饹�᥽�åɤǤ���Ȥ�����include�����ɡ��ȥåץ�٥��include����̯���ü�ǡ��ȥåץ�٥��include�᥽�åɤĤޤ�main���֥������Ȥ�include�᥽�åɤ�¹Ԥ����Object���饹��include���饹�᥽�åɤ�Ƥ���褦�ʵ�ư�򤹤롣���Τ���ˡ����Τ褦�ʤ��Ȥˤʤ롣

  • ���ƤΥ��饹��Object���饹�Υ��֥��饹�ʤΤ�(1.9�Ϥ��㳰�⤢�뤱�ɡ����ͤ������ȻפäƤ����Τ�)��include�����⥸�塼������def self.hoge�Ȥ����������Ƥ����᥽�åɤ����饹�᥽�åɤȤ��ƻȤ���
  • main���֥������Ȥ�Object���饹�Υ��󥹥��󥹤ʤΤ�include�����⥸�塼������def fuga�Ȥ����������Ƥ����᥽�åɤ����󥹥��󥹥᥽�åɤȤ��ƻȤ��롢���Τ���fuga���Ȥ߹��ߴؿ��Τ褦�˸�����褦�ˤʤä�

Ĺ���ʤäƤ����Τǰ�ö�ޤȤ��

  • Ruby�ե�������ɤ߹���Τ�require
  • include�ϡ֥⥸�塼���Ȥ���ä�����פǤϤʤ��ơ֥⥸�塼�뤬���äƤ������ò¡¢¥ï¿½ï¿½é¥¹ï¿½ï¿½ï¿½È¤ß¹ï¿½ï¿½ï¿½á¥½ï¿½Ã¥É¡ï¿½
  • class/moduleʸ������Ȥ��ȡ��⥸�塼�����ħ�����Υ��饹���ɲä���
    • �⥸�塼������def self.hoge�Ȥ����������Ƥ���Ĥ����Υ��饹�����饹�᥽�åɤˤʤ�
    • �⥸�塼������def fuga�Ȥ����������Ƥ���Ĥ����Υ��饹�����󥹥��󥹥᥽�åɤˤʤ�
  • class/moduleʸ�������Ȥ��ȡ��⥸�塼�����ħ��Object���饹���ɲä���
    • �⥸�塼������def self.hoge�Ȥ����������Ƥ���Ĥ����ƤΥ��饹�����饹�᥽�åɤˤʤ�
    • �⥸�塼������def fuga�Ȥ����������Ƥ���Ĥ����ƤΥ��饹�����󥹥��󥹥᥽�åɤˤʤ�

Ĵ�٤Ƥ���include���פ��Τۤ���䤳������������Ĺ���ʤä���ä��Τǡ�module_funcfion��extend�ϼ��ε�����³����

����äȤ�����­

def self.hoge�Ȥ��������Υ᥽�å�����ϡ���˥��饹�᥽�åɤ�����Ȥ��ƻȤ��Ƥ뤱�ɡ����Τ˸����ȡ��ðۥ᥽�åɡפȤ����Τ���������Ρ��ʤΤ�self����ʬ�ϼ¤Ϥɤ�ʥ��֥������ȤǤ⤢�ޤĤ������Ǥ⤤���������饹�᥽�åɤȸƤ�Ǥ��Τμ��֤ϡ�"���饹�Ȥ�������Υ��֥�������"���ðۥ��饹��(���󥹥���)�᥽�åɡפ��ä��ꤹ�롣�Ϥ����Τ����ðۥ��饹�Ȥ��ðۥ᥽�åɤȤ��ϡļ��ε����ǽ񤯤��ʡ�¿ʬ��

½é¤á¤Æ¤ÎRuby���Ƥ�Ruby
���ԡ�Yugui
���丵�����饤�꡼����ѥ�
ȯ������2008-06-26
���������١�4.5
�������ߤ򸫤�