Pharo Smalltalk의 Announcement를 사용해 냉동실 청지를 만들어 봤다.
@sumim씨의 게임 이름: Squeak Smalltalk에 촉발,Pharo
Smalltalk의 Announcement를 사용하여 냉동 병아리를 만들었다.
청지가'준','준','준','docom'을 부르자 시청자들은'청지!'이렇게
방침.
청지는 전문 가수다.나는 많은 청중을 향해 노래를 불렀다.그래서 청지와 관중이 직접 결합하는 것은 좋지 않다.
스타와 청중 사이에 선을 그어야 한다.
따라서 Pharo Smalltalk를 사용하는 Announcement 메커니즘이 분리됩니다.
이루어지다
청렴한 뜻의 실복
클래스 정의는 다음과 같습니다.
Kiyoshi
Object subclass: #Kiyoshi
instanceVariableNames: 'announcer'
classVariableNames: ''
category: 'ズンドコキヨシ'
announcer 초기화 지연을 포함하는 액세서리를 정의합니다.Kiyoshi
announcer
^ announcer ifNil: [ announcer := Announcer new ]
이렇게 되면 청지는 청중에게 방송을 보낼 수 있을 것이다.그럼 방송 내용을 정의합시다.
Phrase
Announcement subclass: #Phrase
instanceVariableNames: 'word'
classVariableNames: ''
category: 'ズンドコキヨシ'
그런 다음 Phrase에서 액세스 및 인스턴스 생성을 정의합니다.Phrase
word
^ word
Phraseword: aString
word := aString
Phrase_classwith: aString
^ self new word: aString
키요시가 노래한다.Kiyoshi
sing: aString
Transcript show: aString.
self announcer announce: (Phrase with: aString)
복사창에 언어를 표시하고 이를 가사(Phrase)로 브로드캐스트합니다.전문 가수가 되면 솔라로 자신이 가장 잘하는 노래를 부를 수 있다.그럼요.
Kiyoshi
ズン
self sing: 'ズン'
Kiyoshiドコ
self sing: 'ドコ'
물론 애드리브도 가능합니다.Kiyoshi
singRandom
(Random new nextInt: 5) = 1
ifTrue: [ self ドコ ]
ifFalse: [ self ズン ]
청중의 설치청중들은 라디오를 듣고'준','준','준','docom'을 들을 때'청지!'이렇게
Audience
Object subclass: #Audience
instanceVariableNames: 'memory'
classVariableNames: ''
category: 'ズンドコキヨシ'
우선 뜻을 똑똑히 듣는 노래를 들으러 가자.Audience
listenTo: aKiyoshi
aKiyoshi announcer subscribe: Phrase send: #hear: to: self
청지는 가사(Phrase)를 방송하면 스스로 듣게 한다.그럼, 들어 보세요.
Audience
hear: aPhrase
self memory add: aPhrase word.
(self memory endsWith: #('ズン' 'ズン' 'ズン' 'ズン' 'ドコ'))
ifTrue: [
self sing: 'キヨシ!'.
self memory removeAll ]
아, 물론memory의 지연 초기화 액세서리도 정의해야 합니다.Audience
memory
^ memory ifNil: [ memory := OrderedCollection new ]
그 다음은 합창단.Audience
sing: aString
Transcript show: aString; cr
다 했어!테스트
그러면 게임 라운드와 스크립트 창을 열고 다음 코드를 실행해 보세요.
Playground
kiyoshi := Kiyoshi new.
audience := Audience new.
audience listenTo: kiyoshi.
그리고 나서Playground
kiyoshi ズン;ズン;ズン;ズン;ドコ;ズン;ズン;ドコ;ドコ;ズン;ズン;ズン;ズン;ドコ
를 입력합니다.대화 상자.잘 됐다!
그럼 애드리브를 발휘해 주세요. 다시 한 번!
Playground
100 timesRepeat: [ kiyoshi singRandom ]
그래서 이렇게 됐어요.총결산
Pharo Smalltalk를 사용하는 Announcement라는 방송기관은 청지와 청중을 강하게 결합시키지 않고down 청지를 만들어 보았다.
기존의changed: 업데이트:를 기반으로 한 방송기관에 비해 업데이트: 보일러판이 필요 없고 상징적인 방송 내용을 사용할 수 있을 뿐만 아니라 필요한 방송도 선택할 수 있기 때문에 자유도가 조금 높아졌다.
Reference
이 문제에 관하여(Pharo Smalltalk의 Announcement를 사용해 냉동실 청지를 만들어 봤다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomooda/items/d6c501a9ea385a69223d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)