[ruby-list:50634] Re: instance_evalで定数が見えない

From: MASAKI Yuhsuke <yek@...>
Date: 2017-12-29 09:48:32 UTC
List: ruby-list #50634
=E5=86=85=E6=B5=B7=E3=81=95=E3=82=93=E3=80=81=E3=81=82=E3=82=8A=E3=81=8C=E3=
=81=A8=E3=81=86=E3=81=94=E3=81=96=E3=81=84=E3=81=BE=E3=81=99=E3=80=82

=E3=80=8C=E3=81=82=E3=82=8C=E3=80=81=E3=81=A7=E3=82=82instance_eval=E3=81=
=A7=E3=82=AF=E3=83=A9=E3=82=B9=E5=A4=89=E6=95=B0=E3=81=AB=E3=81=AF=E3=82=A2=
=E3=82=AF=E3=82=BB=E3=82=B9=E3=81=A7=E3=81=8D=E3=81=9F=E3=82=88=E3=81=AD=E2=
=80=A6?=E3=80=8D
=E3=81=A8=E6=80=9D=E3=81=A3=E3=81=A6=E3=82=84=E3=81=A3=E3=81=A6=E3=81=BF=E3=
=81=9F=E3=81=A8=E3=81=93=E3=82=8D=E3=80=81=E3=81=A7=E3=81=8D=E3=81=BE=E3=81=
=9B=E3=82=93=E3=81=A7=E3=81=97=E3=81=9F=E3=80=82
=E3=81=AA=E3=82=8B=E3=81=BB=E3=81=A9=E2=80=A6

=E3=81=A8=E3=81=AA=E3=82=8B=E3=81=A8=E3=80=81=E3=80=8Cinstance_eval=E5=86=
=85=E3=81=A7=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE=E6=83=85=E5=A0=B1=E3=81=AB=
=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E3=81=97=E3=81=9F=E3=81=84=E3=80=8D=E5=
=A0=B4=E5=90=88=E3=81=AE=E3=80=81
=E3=81=A9=E3=81=86=E3=81=99=E3=82=8B=E3=81=AE=E3=81=8C=E8=89=AF=E3=81=84=E3=
=81=A7=E3=81=97=E3=82=87=E3=81=86=E3=81=8B=E3=80=82
=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B5=E3=81=8B=E3=81=AA?


You wrote:
> =E5=86=85=E6=B5=B7@=E3=83=99=E3=83=AB=E3=82=AE=E3=83=BC=E3=81=A7=E3=81=99
>=20
> instance_eval=E3=81=AF=E3=81=9D=E3=81=AE=E5=90=8D=E5=89=8D=E3=81=AE=E3=81=
=A8=E3=81=8A=E3=82=8A=E3=80=81=E3=82=A4=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=B3=
=E3=82=B9=E3=82=92 evaluate
> =E3=81=97=E3=81=A6=E3=81=84=E3=82=8B=E3=81=AE=E3=81=A0=E3=81=A8=E8=80=83=
=E3=81=88=E3=81=A6=E3=81=84=E3=81=BE=E3=81=99=E3=80=82
>=20
> =E3=81=AA=E3=81=AE=E3=81=A7=E3=82=AF=E3=83=A9=E3=82=B9=E5=AE=9A=E6=95=B0=
=E3=82=92=E8=A6=8B=E3=81=9F=E3=81=91=E3=82=8C=E3=81=B0
>=20
>    p self.class::CONST
>=20
> =E3=81=A8=E3=81=99=E3=82=8C=E3=81=B0=E8=A6=8B=E3=82=8B=E3=81=93=E3=81=A8=
=E3=81=8C=E3=81=A7=E3=81=8D=E3=81=BE=E3=81=99=E3=80=82
>=20
> =E5=AE=9A=E6=95=B0=E3=81=A0=E3=81=91=E3=81=A7=E3=81=AA=E3=81=8F=E3=82=AF=
=E3=83=A9=E3=82=B9=E3=83=BB=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=AB=E3=
=81=AA=E3=82=8A=E3=81=9D=E3=81=86=E3=81=AB=E8=A6=8B=E3=81=88=E3=82=8B=E3=82=
=B3=E3=83=BC=E3=83=89
>=20
>    def self.hi3
>      p self.class::CONST
>    end
>=20
> =E3=82=82=E3=80=81instance_eval=E5=86=85=E3=81=A7=E3=81=AF=E3=82=A4=E3=83=
=B3=E3=82=B9=E3=82=BF=E3=83=B3=E3=82=B9=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=
=E3=81=AB=E3=81=AA=E3=82=8A=E3=81=BE=E3=81=99=E3=81=AD=E3=80=82
> =E4=B8=80=E8=A6=8B=E3=82=8F=E3=81=8B=E3=82=8A=E3=81=AB=E3=81=8F=E3=81=8F=
=E6=80=9D=E3=81=88=E3=81=BE=E3=81=99=E3=81=8C=E3=80=81=E8=80=83=E3=81=88=E3=
=82=8C=E3=81=B0=E3=83=AD=E3=82=B8=E3=82=AB=E3=83=AB=E3=81=A0=E3=81=A8=E6=80=
=9D=E3=81=84=E3=81=BE=E3=81=99=E3=80=82
>=20
>=20
> On 2017/12/29 1:51, Yukihiro Matsumoto wrote:
> > =E3=81=BE=E3=81=A4=E3=82=82=E3=81=A8 =E3=82=86=E3=81=8D=E3=81=B2=E3=82=
=8D=E3=81=A7=E3=81=99
> >=20
> > =E5=AE=9A=E6=95=B0=E3=81=AE=E5=8F=82=E7=85=A7=E3=81=AF=E3=83=AC=E3=82=
=AD=E3=82=B7=E3=82=AB=E3=83=AB=E3=81=AB=E6=B1=BA=E5=AE=9A=E3=81=95=E3=82=8C=
=E3=81=BE=E3=81=99=E3=81=AE=E3=81=A7=E3=80=81instance_eval=E3=81=AA=E3=81=A9
> > =E3=81=A7=E3=81=AF=E5=A4=89=E5=8C=96=E3=81=97=E3=81=BE=E3=81=9B=E3=82=
=93=E3=80=82
> >=20
> >=20
> > In message "Re: [ruby-list:50630]	instance_eval=E3=81=A7=E5=AE=9A=E6=95=
=B0=E3=81=8C=E8=A6=8B=E3=81=88=E3=81=AA=E3=81=84"
> >      on Fri, 29 Dec 2017 03:24:26 +0900, MASAKI Haruka <yek@reasonset.n=
et> writes: =20
> >>
> >> =E6=AD=A3=E6=9C=A8=E3=81=A7=E3=81=99=E3=80=82
> >>
> >> Ruby 2.2=E3=81=AE=E3=81=A8=E3=81=8D=E3=81=AB=E3=82=82=E8=A8=80=E5=8F=
=8A=E3=81=97=E3=81=9F=E3=81=AE=E3=81=A7=E3=81=99=E3=81=8C=E3=80=812.5=E3=81=
=A7=E3=82=82=E5=A4=89=E3=82=8F=E3=81=A3=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=
=E3=81=AE=E3=81=A7=E5=86=8D=E5=BA=A6=E3=81=8A=E8=81=9E=E3=81=8B=E3=81=9B=E4=
=B8=8B=E3=81=95=E3=81=84=E3=80=82
> >> =E3=82=A4=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=B3=E3=82=B9=E3=81=AE=E7=89=
=B9=E7=95=B0=E3=82=AF=E3=83=A9=E3=82=B9=E5=86=85=E3=81=A7=E3=81=AF=E8=A6=8B=
=E3=81=88=E3=82=8B=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE=E5=AE=9A=E6=95=B0=E3=
=81=8C=E3=80=81instance_eval=E3=81=A7=E3=81=AF=E8=A6=8B=E3=81=88=E3=81=BE=
=E3=81=9B=E3=82=93=E3=80=82
> >>
> >> =E3=81=93=E3=82=8C=E3=81=AF=E7=84=B6=E3=82=8B=E3=81=B9=E3=81=8D=E6=8C=
=99=E5=8B=95=E3=81=AA=E3=81=AE=E3=81=A7=E3=81=97=E3=82=87=E3=81=86=E3=81=8B=
=E3=80=82
> >>
> >> ***
> >> =E3=82=B3=E3=83=BC=E3=83=89:
> >>
> >> class ClassA
> >>   CONST=3D"Hello"
> >> end
> >>
> >> obj =3D ClassA.new
> >>
> >> class <<obj
> >>   def hi1
> >>     p CONST
> >>   end
> >> end
> >>
> >> obj.instance_eval do
> >>   def hi2
> >>     p CONST
> >>   end
> >> end
> >>
> >>
> >> =E7=B5=90=E6=9E=9C:
> >>
> >> "Hello"
> >> Traceback (most resent call last):
> >>         1: fron instance_eval_test.rb:20:in `<main>'
> >> instance_eval_test.rb:15:in `hi2': uninitialized constant CONST (NameE=
rror)
> >> *** =20
> >  =20
>=20

In This Thread