Range(文字列)とcells(i,j)の記法が似ているのは収斂進化

3
ほえほえ@スプシマン @hoehoe1234

多様性ってVBAのバリアントと同じで、抽象化された操作をしているにすぎない。足し算をするときに実数か整数かは意識しない。これを型にまで拡張したもの。継承は機能を継承すると単なるライブラリ的な使い方。機能を書き換えてこそ意味がある。抽象操作に対する具象機能を動的に書き換える仕組み。

2021-05-05 12:07:42
ほえほえ@スプシマン @hoehoe1234

VBAのバリアントは値ベースの多様性を実現している。だからオブジェクト指向をやったことがあると使い方の感覚がわかってとても使いやすいはず。「オブジェクト指向ではこうできた!」というのが一部実現できる。バリアントは値ベースの多様性と理解すればしっくりいく。

2021-05-05 12:09:00
ほえほえ@スプシマン @hoehoe1234

レンジにしても簿記にしても、やはり大切なのは「こういう仕組みではないのか?」と考え続けることかな。個々の利用方法とかそういのは合っていても間違っていていても瑕疵があっても問題ない。「それはどういう振る舞いをするのか?」を考えるといろいろ到達できる。

2021-05-05 12:12:56
ほえほえ@スプシマン @hoehoe1234

そういう意味で言えば ①Range("A1") も ②Cells(1,1) も同じだとは言える。②は現シートの全体のなかの(1,1)だけど。①は参照文字列から範囲を作成しているけど広い意味では全体の中を文字列で指定しているともいえる。

2021-05-05 12:15:28
ほえほえ@スプシマン @hoehoe1234

英単語と同じで重複しているニュアンスはもちろんある。しかし、それでもより特徴を捉えていくとRangeのダブルミーニングがあるので ①Range、Union、Intersect ②Cells、Rows、Columns ③Range(文字列) ④その他の範囲系 となるだろう。

2021-05-05 12:17:40
ほえほえ@スプシマン @hoehoe1234

ややこしいのは cells(i,j)はcells.item(i,j) であること。これはデフォルトプロパティの話しなんだけど、記法ショートカットにより Range(文字列)とCells(i,j)のようになりこれは収斂進化であり違うものが同じ記法で書けるということだろう。

2021-05-05 12:19:56
ほえほえ@スプシマン @hoehoe1234

結論めいたものがあるとすれば、レンジを理解するにはデフォルトプロパティを理解しなければいけない。ショートカットされる前の記法を思い浮かべて関数を分類しなければ正しい分類ができないということだろう。収斂進化にだまされてはいけないw。

2021-05-05 12:21:04
ほえほえ@スプシマン @hoehoe1234

cells(i,j)とRange("A1")で悩んでいる間はうまくレンジを使いこなせない。これはワイがずっとそうだったからよくわかる。違うものが収斂進化しているのにその元を考えずしてわかるわけがない。前者はcells.item(i,j)。すなわち「cellsとは?」がわからないと前にすすめない。

2021-05-05 12:30:26
ほえほえ@スプシマン @hoehoe1234

もちろん抽象化モデルなのでいろいろな考え方がある。なぜなら本当の実装をみることができないからだ。なので「挙動」から合理性のある、すなわち、応用の効く抽象化モデルを考える必要がある。この考えによりほえDX塾ではRange("A1")とcells(i,j)は違うものとしている。

2021-05-05 12:31:42