instance_eval에서 실례에 기능 추가
개요
Ruby "instance eval"사용
실례적인 기능을 동적으로 부여해 보아라.
컨디션
instance_이른바 eval
매개변수의 문자열을 루비 프로그램으로 평가
이 호출원 실례를 평가할 수 있는 처리 방법이다.
구체적인 예로 아래와 같다.
class Sample
def initialize
@x = 10
end
end
sample = Sample.new
p sample #<Sample:0x00007fe6ed9e6868 @x=10>
sample.instance_eval "@y = 20"
p sample #<Sample:0x00007fe6ed9e6868 @x=10, @y=20>
이 구체적인 예시와 같이 첫 번째 sample
(Sample 클래스 실례)의 출력에서유지
@x
만 하고 그 다음은 instance입니다.eval에 저장@y
두 번째sample
의 출력에서@y
도 실례 변수로 유지할 수 있다.instance_eval
수신기로서의 실례만응용 평가 프로그램.
따라서 모든 실례에 고유한 처리를 추가할 수 있는 이미지다.
이용 예
예를 들어 게임 등 동적 읽기 캐릭터의 고유한 처리를 통해 처리할 수 있다
나는 이런 일은 괜찮다고 생각한다.
게임에서 각 캐릭터의 고유한 처리는 각각 파일에 기록된다
게임 진행 중 그 파일 읽기 instanceeval에서 평가와 실례를 주다
이런 인상.
구체적인 예로 아래와 같다.
character.rb
class Character
def initialize
...
end
# ここに共通処理を実装するのもいい.
...
end
c1 = Character.new
c1.instance_eval File.read './characters/chara_1.rb'
p c1
c1.ability
c2 = Character.new
c2.instance_eval File.read './characters/chara_2.rb'
p c2
c2.ability
./characters/chara_1.rb
@name = "ブレイブリーファルコン"
@power = 5
@health = 6
def ability
p "#{@name} executes own ability."
p "ブレイブショット"
end
./characters/chara_2.rb
@name = "見習い剣士"
@power = 2
@health = 3
def ability
p "#{@name} executes own ability."
p "クリティカルバスター"
end
실행 결과❯❯❯ ruby character.rb
#<Character:0x00007fe02b905cc8 @name="ブレイブリーファルコン", @power=5, @health=6>
"ブレイブリーファルコン executes own ability."
"ブレイブショット"
#<Character:0x00007fe02b904288 @name="見習い剣士", @power=2, @health=3>
"見習い剣士 executes own ability."
"クリティカルバスター"
위에서 말한 바와 같이 각 캐릭터의 설정 파일(상태와 능력 내용)을 읽고 각 실례에서 고유한 처리를 수행할 수 있다.
Reference
이 문제에 관하여(instance_eval에서 실례에 기능 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/massu_devix/articles/6131881b321a0b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)