から要素を取得する:私のためスモールトーク - 私は次のような問題持っているアレイ
t := #(1,2,3)
t at: 1 -> 1
t at: 2 -> #,
ザッツの問題を、次のような効果を得るためにどのように :
t at 1 -> 1
t at 2 -> 2
から要素を取得する:私のためスモールトーク - 私は次のような問題持っているアレイ
t := #(1,2,3)
t at: 1 -> 1
t at: 2 -> #,
ザッツの問題を、次のような効果を得るためにどのように :
t at 1 -> 1
t at 2 -> 2
#(1,2,3)
は要素が分離され、配列リテラルですスペースまたはタイプのいずれかによって、最終的には5つの項目を持つ配列が得られます。そのうちの2つはカンマシンボル:#,
(#
はシンボルリテラルの表示に使用されます)。
配列を#(1 2 3)
と定義する必要があります。
配列式:{1 . 2 . 3}
もありますが、これは評価対象です。たとえば、{1 . 2 . 2 + 4 . a + b}
は、コンパイル時に定義する必要があるため、リテラル配列#()
で行うことはできません。例えば。私が使用した変数a
とb
は、コンパイル時には分かりません
OKです。この機会に、リテラルのより完全な説明を提供しましょう。
は
整数
進
10
-1
0
1000000000000000000000000000000000000000000
にはSmalltalkで
進リテラルのいくつかの種類があります。16rAB1F
16r0
-16rFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
17s0
3.14159265s8
他ScaledDecimal
8r7731 (octal)
2r1001 (binary)
10r99987 (decimal again!)
etc.
文字
$A (uppercase)
$a (lowercase)
$ (space!)
$→ (unicode)
$1 (not to be confused with 1)
ストリング
'' (empty string)
' ' (string with 1 space)
'Hello world'
シンボル
#hello
#'hello world'
#'' (empty symbol, not very useful)
#+
#1 (not the integer 1)
ByteArrayとして定義
#[1 2 3 4] (separators are blank)
#[] (empty ByteArray)
#[0 0 0 0 255] (length is arbitrary)
の配列
#(256 16rAB1F 3.14s2 2r1001 $A #this)
リテラル配列はsepartorsとして空白の任意の種類と数を使用することに注意してください
#(256
16rAB1F
3.14s2
2r1001
$A #this) (same as above)
も注意してくださいあなたは
#[255 16rFF 8r377 2r11111111] (four times 255)
#(#[1 2 3] #('string' #symbol)) (arrays of arrays)
リテラルを構成することができ、いくつかの「公差があります*緩やかな表記へ
#(symbol) = #(#symbol) (missing # => symbol)
#('string' ($a 'a')) (missing # => array)
しかし、ここにいない:
#([1 2 3]) ~= #(#[1 2 3]) (missing # => misinterpreted)
しかし
#(true nil false) (pseudo variables ok)
しかし、ここにいません!
#(self) = #(#self) (missing # => symbol)
あなたは矛盾がいくつかあります見ることができるように:
が。擬似変数true
、false
とnil
がアレイ内のリテラルとして受け入れられているが、擬似変数self
とsuper
は、(修飾されていない文字列のためのより一般的なルールを使用して。)シンボルとして解釈される
B。 #を書くことは必須ではありませんが(配列にネストされた配列を開始するには括弧で十分ですが、ネストされたByteArrayを開始するには#を書くことが必須です)