トップ «前の日記(2011-11-09(Wed)) 最新 次の日記(2011-11-20(Sun))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2011-11-19(Sat) 肌寒く雨

Smalltalk ちょこちょこ

Squeak の チュートリアルを眺めながらあれこれ。
Gnu Smalltalk にも色々喰わせてみている。
メッセージの区切りは、"." らしい。一行だけなら付けなくても 動くが、一応付けるようにしよう。

st> #(1 2 5 3) last.
3
 
st> y := #(4 3 'foo').
(4 3 'foo' )
st> y last.
'foo'

#( object1 object2 ...)が配列ということか。

st> x := Array new: 3.
(nil nil nil )
st> y
nil
st> y := Array new: 3.
(nil nil nil )
st> x = y
true
st> z := #(nil nil nil).
(nil nil nil )
st> x = z.
true
 
st> x at: 2 put: 4.
4
stst> z at: 2 put: 4.
Object: Array new: 3 "<0x403658e0>" error: Invalid 
value nil: object is read-only (ry
nil

うーん、いま一つわからん。

st> #('あ' 'い' 'う' 3 'foo' "bar") size.
5
st> #('あ' 'い' 'う' 3 'foo' "bar") last.
'foo'

"foo" はコメントになるようだ。

st> $a asciiValue.
97
st> $b asciiValue.
98
st> $が asciiValue.
stdin:190: Invalid character literal, only character codes \
  from 0 to 127 are valid
stdin:190: Invalid character 0xac

Squeak では ASCII以外も通るようだった。
Transcript と Workspace を開き、Workspaceに打鍵した

Transcript show: $あ asciiValue.

を評価させると、20983074 がTranscript に表示された。
Transcript clear. で消える。

st> | foo bar baz lastobj |
st> foo := #'abc'.
#abc
st> bar := foo last.
$c
st> baz := bar asciiValue.
99
st> lastobj := baz + 10.
109
st> ^lastobj.
109

GStの対話環境でもコピペ一発で動いた。
スクリプトにもできた。最終行は lastobj printNl. とする。

メッセージの優先順位

st> 3 + 7 * 5
50
st> 3 + (7 * 5)
38

文字数でなくバイト数らしい

端末によって違っていた。
例えば ja_JP.eucJP。

st> 'いろはにほへと' copyFrom: 3 to: 8
'ろはに'
st> 'いろはにほへと' copyReplaceFrom: 3 to: 6 with: 'ロハニ'.
'いロハニにほへと'

次に ja_JP.UTF-8。

st> 'いろはにほへと' copyFrom: 4 to: 12
'ろはに'
st> 'いろはにほへと' copyReplaceFrom: 4 to: 12 with: 'ロハニ'.
'いロハニほへと'

これ以外では化けたり化けなかったりする。
ちなみに Squeak の Workspace では、 copyFrom: 2 to: 4. とかでOKだった。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。