興味深い書き込みはここです。
VBでも三項演算子的に書けば、値を返してくれるので、cametanさん、お勧めの書き方に近いと思います。ただBardでも指摘されてましたが、VBは初心者用のようです。実際そうかも知れませんが。(笑)VBは静的型付けとも違う、混合型ということですので、geometric_sumBで引数の型、関数の型を省略してみました。
興味深い書き込みはここです。
VBでも三項演算子的に書けば、値を返してくれるので、cametanさん、お勧めの書き方に近いと思います。ただBardでも指摘されてましたが、VBは初心者用のようです。実際そうかも知れませんが。(笑)VBは静的型付けとも違う、混合型ということですので、geometric_sumBで引数の型、関数の型を省略してみました。
そうですね。
ちなみに、Scalaなんかも条件分岐「式」なんで、あそこで書いたようにまるっと書ける筈です。
if式で条件分岐する方法:
https://scalapedia.com/articles/86/if%E5%BC%8F%E3%81%A7%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
モダンな言語(F#とかOCamlとか)だと条件分岐は「文」であるよりも「式」である確率が高いんで、C言語/Pascal的な「文」な条件分岐より遥かに使い勝手が良くなってます。
Scalaでもifは式ですので、というか第一級オブジェクトの言語では普通のことでしょうか?Scalaでもdefとvalの違いがわからなくなることが有る、違いがないということなんですかね。
頭が古い、とか古くない、ってのは関係がないです。
いっつも書いてますが、結局、人間「処女を捧げたプログラミング言語」から離れられないんですよ(笑)。
最初に使った言語の「影響力」ってのが一番デカい。
だから多分isamさんが最初に「使いこなした」プログラミング言語がVBだった、って事でしょうねぇ。
例えば、新しい言語で書いて、ロジックが分からなくなった時に「あの言語で書けばこう書ける」って浮かんできた「あの言語」が結局「一番手に馴染んだ」言語で、isamさんの場合はそれがVBなんだろうな、って事です。
僕も、ロジックが怪しくなった時に「確認の為に」使う言語はSchemeです。結局それが「一番手に馴染んでる」って事で、なかなか最初の言語から離れるのは難しいんです。
> Scalaでもifは式ですので、というか第一級オブジェクトの言語では普通のことでしょうか?
う〜ん、必ずしも「ifが式」ってのと「関数が第一級オブジェクトである」ってのは理論的に直接関係あるわけじゃないですけど。
ただ、モダンな言語で貪欲に「いろんな機能を追加しよう」って頑張ってるプログラミング言語だと両者兼ね備えてる、ってケースは多いと思います。
だからそれに比べると実はPythonは保守的ですよね。
> Scalaでもdefとvalの違いがわからなくなることが有る、違いがないということなんですかね。
これ、理論的にはそうなんです。関数が第一級オブジェクトで無名関数を備えてる、そして変数と関数で名前空間を共有してる場合、「関数定義」と「変数定義」に違いはないんです。
Schemeが証明したのはそういう事です。
ただ、JavaScriptなんか見ると、理論とまた違って、実装上「違い」を作ってる場合があるんですよ(笑)。
だからScalaでもひょっとしたら違いがあるのかもしれません。
注: Scalaの場合、ザーッと見た限り、無名関数以外の関数
なく、defで定義するのは「メソッド」で、複文が定義可能、ってのが違いなのかもしれませんが、Scalaは良く知らんので明言は避けます。
まぁ、見た目は「静的型付け」のRubyですが(笑)。
多分ですが、cametanさんの構築とは違うでしょう。答えがあったとしても。
やってみていいと思いますよ。
まぁ、少なくともルールは簡単だし。1970年代のミニコンで動いてたくらいだし。
あの時代に「コンピュータゲーム化してる」って事は実はそんなに難しくないです。
今の言語(VB含む)だと十二分に短く書けるでしょう。