未だに知識がしっかりつかないのは,outputがきちんとできないため.
ということで,需要があるかわかりませんが,へっぽこSqueak SmalltalkユーザによるSqueak Smalltalkで考えるObjective-Cを書いてみます(おそらく大学の身内しか必要ないだろう).
でも,時間がないので,テキトーなメモです.
Hello World
Squeak Smalltalk
Transcript cr; show:'Hello World'.
Objective-C
// file name -> test.m #import<foundation/foundation.h> int main(void){ NSLog(@"Hello World"); return 0; }
実行方法
Squeak Smalltalk
"Workspaceに記述し,do it"
Objective-C
例
端末で以下のような方法でコンパイル
$ gcc -framework Foundation test.m
リテラル
Objective-CはC言語のリテラルが使えます.
コメント
Squeak Smalltalk
ダブルクオーテーションで囲みます.
Objective-C
// または,/* ・・・*/ です.
数
Squeak Smalltalk
全てオブジェクトとして扱います.
Objective-C
Cの基本データ型の数値とNSNumberクラスのインスタンスがある.
NSIntegerは普通のintまたはlong.
例
NSNumber *number = [NSNumber numberWithFloat: 1.0];
文字列
Squeak Smalltalk
シングルクオーテーションで囲みます.
'文字列です'
Objective-C
C言語の文字列以外に,NSStringのインスタンスの文字列があります.
ダブルクオーテーションで囲み,先頭に@を付けます.
@"文字列です"
代入
Squeak Smalltalk
:=
Objective-C
=
文末
Squeak Smalltalk
."ピリオド"
Objective-C
; //セミコロン
メッセージ式
Squeak Smalltalk
'Ringo no Tane' size. "文字列の長さを求める"
Objective-C
[ ] で囲むことにより,メッセージが送信できます.Objective-Cにはメッセージ式による優先順位がない.優先順位は括弧の付け方で決定される.
[@"Ringo no Tane" length]; //文字列の長さを求める
算術演算
Squeak Smalltalk
Smalltalkでは,メッセージ式の優先順位で計算をする.
Objective-C
C言語と同様な優先順位で行なわれる.
カスケード
Squeak Smalltalk
; "セミコロン"
例
"カスケードなし" Transcript cr. Transcript show:'Hello'. "カスケードあり" Transcript cr; show:'Hello'.
Objective-C
存在しません.
ブール値
Squeak Smalltalk
true "真,Trueクラスのインスタンス" false "偽,Falseクラスのインスタンス" nil "不定"
Objective-C
Bool型はブール値を扱うための方
YES //真を表す定数 0でない値 NO //偽を表す定数 0 nil //nullのオブジェクトを示す.nilはid型の空ポインタ.値は0.
制御構造
if
Squeak Smalltalk
if文はありませんが,ifに相当するメソッドが実装されています.
1 > 0 ifTrue:[ Transcript show:'Ha Ha Ha!!'; cr. ].Objective-C
if(1 > 0){ printf("Ha ha Ha!\n"); }
while
Squeak Smalltalk
i := 0. [i<4] whileTrue:[ Transcript cr;show:'hoge'. i := i + 1. ].
Objective-C
int i = 0; while(i<4){ printf("hoge\n"); }
for
Squeak Smalltalk
for文のように振る舞うto:, to:do:, to:by:do:があります.
例
1 to: by:1 10 do:[:v | Transcript cr;show:v ].
Objective-C
int i; for(i=1; i<11; i=i+1){ printf("%d",i); }SmalltalkのイテレータとObjective-C高速列挙
別の時に説明します.
switch
Squeak Smalltalkにはありません.
余談,SmallTalk R4.1 http://smalltalk.smalltalk-users.jp/ ならあります.
Objective-C
略します.
次回は,クラス定義について書こうと思います.
0 件のコメント:
コメントを投稿