<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=ComputerProgrammingwithGNUSmalltalk%3A4.1</id>
	<title>ComputerProgrammingwithGNUSmalltalk:4.1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=ComputerProgrammingwithGNUSmalltalk%3A4.1"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=ComputerProgrammingwithGNUSmalltalk:4.1&amp;action=history"/>
	<updated>2026-04-16T20:09:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=ComputerProgrammingwithGNUSmalltalk:4.1&amp;diff=2512&amp;oldid=prev</id>
		<title>Onionmixer: CPGS 블록 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=ComputerProgrammingwithGNUSmalltalk:4.1&amp;diff=2512&amp;oldid=prev"/>
		<updated>2012-10-16T06:58:00Z</updated>

		<summary type="html">&lt;p&gt;CPGS 블록 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==블록==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
블록은 나중에 실행될 수식 표현을 담고 있는 객체입니다. 그저 대괄호 안에 작성한 코드일 뿐입니다. 블록의 예입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;#039;Hello World!&amp;#039; printNl.&lt;br /&gt;
(3 + 7) printNl]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
기억해야 할 점은 작성한 블록도 객체이며, 블록 안의 코드도 바로 실행하는 것이 아니라는 점입니다. 블록에 value 라고 이름붙인 메시지를 전달해보면 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;#039;Hello World!&amp;#039; printNl.&lt;br /&gt;
(3 + 7) printNl] value&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{HighlightPurple|&amp;#039;Hello World!&amp;#039;&amp;lt;BR&amp;gt;10&amp;lt;BR&amp;gt;10}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
객체 10이 두 번 출력되었는데, 블록의 소스코드 중 마지막 수식표현의 값으로 객체 10을 반환하였기 때문입니다. 다시 말하지만, 이것은 터미널에서 인터렉티브 모드로 코드를 수행하였을 때의 얘기입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
제어 표현에서 보겠지만, 블록은 매우 유용한 객체 구조입니다. 제어 표현으로 들어가기 전에, 블록의 요소 중 하나인, 블록의 인자에 대해 말해보겠습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
때때로 블록은 안의 코드에서 처리해야 할 추가 자료를 필요로 하는 경우가 있습니다. 그 때에는 추가적인 자료를 하나 이상의 블록 인자로 만들어서 전달하면 됩니다. 보통 인자를 갖는 블록의 구조는 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
[:blockArgument1 :blockArgument2 | block-expression-1. block-expression-2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
블록 인자들은 블록의 시작 부분에 위치하며, 모든 인자들은 앞에 콜론을 붙이도록 되어 있습니다. 블록의 인자부분은 파이프 문자로 블록의 주요 내용과 구분합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
앞으로 대부분 이러한 종류의 블록을 특수한 메시지와 함께 사용할 것입니다. 그러나 여러분이 이러한 블록을 직접 사용하길 원한다면, 여러분은 인자 갯수만큼의 value: 메시지를 포함한 선택자를 갖춘 메시지를 보내야 할 것입니다. 예를 들어, 블록이 세 개의 인자를 필요로 한다면, 여러분은 value:value:value: 선택자를 사용해야 할 것입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예제로 이 주제를 마무리하겠습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;blocks.st&amp;quot;&lt;br /&gt;
&amp;quot;A program which involves a block with an argument.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
| greetings |&lt;br /&gt;
&lt;br /&gt;
greetings := [:platesOfCornFlakes | &amp;#039;I have eaten &amp;#039;, platesOfCornFlakes printString, &amp;#039; plates of corn flakes this morning!&amp;#039;].&lt;br /&gt;
&lt;br /&gt;
(&amp;#039;Hello ma! &amp;#039;, (greetings value: 3)) printNl.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{HighlightPurple|&amp;#039;Hello ma! I have eaten 3 plates of corn flakes this morning!&amp;#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
여기서 가장 먼저 앞으로 만들게 될 블록을 가리킬 greetings라는 변수를 만들었습니다. 그리고 인자가 있는 블록을 생성하여 변수에 지정했습니다. 주의할 점은 표현식 안에서 인자를 쓸 때에는 인자 앞에 콜론을 붙이지 않았다는 것입니다. 인자를 선언할 때에만 콜론을 쓰고, 이후에는 생략합니다. 마지막으로 greeting value: 3 이라는 표현과 함께 이 블록을 실행하였습니다. 우선순위를 고려하여 괄호로 묶어주는 것을 잊지 마십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 제어 표현으로 진행할 준비가 되었습니다.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ComputerProgrammingwithGNUSmalltalk]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>