EssenMemo0005
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Essenの開発メモ#0005
-(by [[K]], 2017.05.24)
** virtual-index
-(1) 現在、Essenに仮想インデックスという仕組みを導入した...
-(2) 順を追って説明します。たとえば、以下のような配列があ...
a[0] = (name:"Taro" age:15)
a[1] = (name:"Jiro" age:12)
a[2] = (name:"Sabu" age:10)
-ここでa[0]は誰ですか?と問い合わせて答えを得ることは、ほ...
-Essenでもできますが、それ以外にも、name順で並べたときのa...
-記法をまだ考えていないのですが、とりあえずこうしておきま...
>print searchElement(a, "name", 1)
(name:"Sabu" age:10)
>print searchElement(a, "age", 2)
(name:"Taro" age:15)
-こういうことができるので、最大値とか最小値とかを簡単に探...
-次にできることとして、要素を返すのではなく、配列の何番目...
>print searchIndex(a, "name", 1)
2
>print searchIndex(a, "age", 2)
0
-まあ要するに、 searchElement(a, ...) == a[searchIndex(a,...
-さらに発展させて、a[1]は"name"では何番目なのか?という問...
>print searchIndex(a, 1, "name")
0
-(3) さて本題の仮想インデックスです。
-仮想インデックスは、要素内の定数ではなく、動的に変わる変...
a[0] = (name:"Taro" age:15 extra:virtualIndex)
a[1] = (name:"Jiro" age:12 extra:virtualIndex)
a[2] = (name:"Sabu" age:10 extra:virtualIndex)
-それでは、extraの値を表示してみます。
>print (a[0].extra a[1].extra a[2].extra)
(0 1 2)
-ほら、なんだか分からないですが、なにやら整数が入っている...
-では、値を変更してみましょう。
>a[2].extra = 0
>print (a[0].extra a[1].extra a[2].extra)
(1 2 0)
-これは何が起きたかというと、a[2].extraが0になったので、a...
- イメージ -
before: a[0] a[1] a[2]
after: a[2] a[0] a[1]
-つまりvirtual-indexは要素の順番を管理する機能を持ってい...
-ひとつの配列に複数のvirtual-indexを持たせて、別々の順番...
--「extraでの8番目の要素を削除」
--「extraでの2番目の要素は、extra2での何番目なのか?」
-virtual-indexは値を変更すると後ろが全部自動でずれるので...
** Essenが目指しているもの
-このように、Essenではたいていのことが配列だけでできます...
-また、データの型もあまり気にしなくていいのです。
a[0] = 1
a[1] = "abc"
a[2] = 3.14
-みたいに適当に入れてしまっていいわけです。C言語ではunion...
-なお、Essenではデータをソートするという考え方はしません...
--もちろん何か適当なキーで並べ替えた配列を別途つくり、も...
* こめんと欄
#comment
終了行:
* Essenの開発メモ#0005
-(by [[K]], 2017.05.24)
** virtual-index
-(1) 現在、Essenに仮想インデックスという仕組みを導入した...
-(2) 順を追って説明します。たとえば、以下のような配列があ...
a[0] = (name:"Taro" age:15)
a[1] = (name:"Jiro" age:12)
a[2] = (name:"Sabu" age:10)
-ここでa[0]は誰ですか?と問い合わせて答えを得ることは、ほ...
-Essenでもできますが、それ以外にも、name順で並べたときのa...
-記法をまだ考えていないのですが、とりあえずこうしておきま...
>print searchElement(a, "name", 1)
(name:"Sabu" age:10)
>print searchElement(a, "age", 2)
(name:"Taro" age:15)
-こういうことができるので、最大値とか最小値とかを簡単に探...
-次にできることとして、要素を返すのではなく、配列の何番目...
>print searchIndex(a, "name", 1)
2
>print searchIndex(a, "age", 2)
0
-まあ要するに、 searchElement(a, ...) == a[searchIndex(a,...
-さらに発展させて、a[1]は"name"では何番目なのか?という問...
>print searchIndex(a, 1, "name")
0
-(3) さて本題の仮想インデックスです。
-仮想インデックスは、要素内の定数ではなく、動的に変わる変...
a[0] = (name:"Taro" age:15 extra:virtualIndex)
a[1] = (name:"Jiro" age:12 extra:virtualIndex)
a[2] = (name:"Sabu" age:10 extra:virtualIndex)
-それでは、extraの値を表示してみます。
>print (a[0].extra a[1].extra a[2].extra)
(0 1 2)
-ほら、なんだか分からないですが、なにやら整数が入っている...
-では、値を変更してみましょう。
>a[2].extra = 0
>print (a[0].extra a[1].extra a[2].extra)
(1 2 0)
-これは何が起きたかというと、a[2].extraが0になったので、a...
- イメージ -
before: a[0] a[1] a[2]
after: a[2] a[0] a[1]
-つまりvirtual-indexは要素の順番を管理する機能を持ってい...
-ひとつの配列に複数のvirtual-indexを持たせて、別々の順番...
--「extraでの8番目の要素を削除」
--「extraでの2番目の要素は、extra2での何番目なのか?」
-virtual-indexは値を変更すると後ろが全部自動でずれるので...
** Essenが目指しているもの
-このように、Essenではたいていのことが配列だけでできます...
-また、データの型もあまり気にしなくていいのです。
a[0] = 1
a[1] = "abc"
a[2] = 3.14
-みたいに適当に入れてしまっていいわけです。C言語ではunion...
-なお、Essenではデータをソートするという考え方はしません...
--もちろん何か適当なキーで並べ替えた配列を別途つくり、も...
* こめんと欄
#comment
ページ名: