- Smalltalk総合 Squeak Pharo
222 :デフォルトの名無しさん[sage]:2015/02/11(水) 09:08:37.73 ID:WHehhV2d - >>217
基本的にGNU SmalltalkにAndroid用の追加Packageがちょこっと乗ってるだけ。 GNU Smalltalkの部分はLinuxやWindows上と使い勝手は変わんないよ。 因みにGNU Smalltalkは方言が激しすぎると思うかもしれないけど、 他の環境と同じような書き方もできるよ。 "Smalltalk User Exampleといい名前空間を作る。" Smalltalk addSubspace: #User. Smalltalk User addSubspace: #Example. "Smalltalk User Example に移動する" ! Namespace current: Smalltalk User Example ! Object subclass: #Someoen instanceVariableNames: 'name' classVariableNames: '' poolDirectory: ''. "ClassのInstance変数の登録(省略可)" Someone class instanceVariableNames: ''. "name変数の読み書き用Method登録。defaultは初期値" Someone createSetMethod: 'name'; createGetMethod: 'name' default: ''.
|
- Smalltalk総合 Squeak Pharo
223 :デフォルトの名無しさん[sage]:2015/02/11(水) 09:09:08.40 ID:WHehhV2d - "Instance用のMethod登録"
! Someone methodsFor: 'example' ! something ^ '何か処理を書く'. !! "Class用のMethod登録" ! Someone class methodsFor: 'instance creation' ! withName: aString ^ self basicNew name: aString. !! "現在の名前空間を変更して保存すると、名前空間が変更しっぱなしになるので戻す。" ! Namespace current: Smalltalk ! " Imageに保存。引数を指定しなければ/mnt/sdcard/ls4a/gst.imに保存される。 元のgst.imはどこかに保存しとくこと。 " ObjectMemory snapshot.
|
- Smalltalk総合 Squeak Pharo
224 :デフォルトの名無しさん[sage]:2015/02/11(水) 09:36:26.45 ID:WHehhV2d - GNU Smalltalkの注意点
1. 親の名前空間が持っている名前空間を子の名前空間は作れない ダメな例 Smalltalk Test Something Test. 大丈夫な例 Smalltalk SomethingA Test. Smalltalk SomethingB Test. 代わりに子の名前空間から親の名前空間を参照するとき 参照する親より上の名前空間を省略できる。 Smalltalk Test Something ExampleAという構成の時ExampleAから TestのClassをExampleBを参照するとき 下記のいづれでも参照できる。 ExampleB Test ExampleB Smalltalk Test ExampleB 2. 大文字で始める変数、または大域は宣言してないとnilになる。 つづりを間違えた時に結構ハマる。 Method内で書いた小文字の変数は宣言が無いと翻訳失敗になる。 また、名前空間をSmalltalk.Something.と「.」で区切れば、 親の名前空間が存在しない時翻訳失敗にしてくれる。 ただし、最後の名前空間名やClass名まで存在するか見てくれない。
|
- Smalltalk総合 Squeak Pharo
225 :デフォルトの名無しさん[sage]:2015/02/11(水) 09:53:20.80 ID:WHehhV2d - 3. 例外を捕まえるClassの種類ににExceptionから派生した
Class以外を指定すると訳の分からない例外になる。 [ ] on: NotFound "NotFoundが存在しない場合nilになっており例外処理が暴走する。" do: [ :exception | ]. 4. nilを継承できる。nilを継承するとMessageに 存在しないMethodを指定されてもErrorにしない。 "SuperSomethingは実はnilだが継承できてしまう。" SuperSomething subclass: #Something. "helloは無視される。" Something new hello. ただし、nilを継承すればあらゆるMessageを doesNotUnderstaedで受け取ることができるいう利点もある。 Objectを継承しているとObjectが実装しているMessageは受け取れない。
|
- Smalltalk総合 Squeak Pharo
226 :デフォルトの名無しさん[sage]:2015/02/11(水) 10:04:46.87 ID:WHehhV2d - sl4aでGNU Smalltalkを使う時のヒント。
GUI は下記のような感じで作ることができる。 PackageLoader fileInPackage: 'Android'. | os event | os := Android. "UI表示" os fullShow: '<?xml version = "1.0" encoding = "utf-8" ?> <LinearLayout xmlns:os = "http://schemas.android.com/apk/res/android" os:layout_width = "match_parent" os:layout_height = "match_parent" os:orientation = "vertical" > <EditText os:layout_width = "match_parent" os:layout_height = "wrap_content" /> </LinearLayout> ' "Event待ち" event := os eventWait.
|