2023年3月5日 (日)
2022年11月15日 (火)
2022年10月14日 (金)
2022年10月8日 (土)
2022年10月4日 (火)
2022年10月2日 (日)
2022年9月11日 (日)
2022年8月2日 (火)
2022年7月31日 (日)
2022年7月30日 (土)
2022年7月28日 (木)
2022年7月27日 (水)
2022年7月26日 (火)
ln
−206
→Setオブジェクト: Setオブジェクトは集合です。任意の Crystal オブジェクトを要素として持つことができますが、1つの値は重複して持てません。 Set.newに配列式<code>{ 要素1, 要素2, … 要素n }</code> などを渡し初期化します。
+2,070
→オブジェクト: Crystal では、全てがオブジェクトです。
+3,401
2022年7月25日 (月)
→Tupleオブジェクト: Tupleオブジェクトは、任意の Crystal オブジェクトを要素として持つことができます。 配列式<code>{ 要素1, 要素2, … 要素n }</code> で生成します。
+874
→Integer#times: 冗長な例を削除
−254
→網羅性の検査: when の代わりに in を使用すると、exhaustive case 式が作成されます。exhaustive case では、必要な in 条件を省略するとコンパイル時にエラーとなります。exhaustive case 式では、when 節と else 節を含むことはできません。
+424
→外部リンク: * [https://crystal-lang.org/ The Crystal Programming Language] {{---}} 公式サイト ** [https://crystal-lang.org/reference/1.5/ ドキュメント] *** [https://crystal-lang.org/api/1.5.0/ APIマニュアル] ** [https://play.crystal-lang.org/#/cr Compile & run code in Crystal] {{---}} playground
+51
→クラスのメソッド一覧: style="overflow: scroll;height:7em"
+74
2022年7月24日 (日)
→Ruby との違い: 誤字脱字言換え
+3
→crystal コマンド: crystal コマンドは Crystal のコンパイラであると同時に、ビルドツールなどを含んだツールチェインです(プログラミング言語のCrystalは、先頭を大文字、コマンドのcrystalは、先頭を小文字にして区別します)。
+1,067
→プログラミング環境: Crystalのプログラムを作り、コンパイル・実装するには、「オンライン実行環境を使う」・「エディト・コンパイル・実行環境を用意してそれを使う」の2通りの方法があります。
+820
→superclass と subclasses: Crystal には、RubyのClassにあるメソッド superclass と subclasses がないので、マクロで実装しました。
+1,134
2022年7月23日 (土)
2022年7月22日 (金)
→クラスのメソッド一覧: Crystal には、Objectクラスにmethodsメソッドがないので、マクロで実装しました。
+19,268
→Integer#times: Use p!
+215
→演算子: Crystalは、1つ、2つ、または3つのオペランドを持つ数多くの演算子をサポートしています<ref>[https://crystal-lang.org/reference/1.5/syntax_and_semantics/operators.html Operators]access-date:2022-07-22</ref>。 演算子式は、実際にはメソッド呼び出しとしてパースされます。例えば、<code>a + b</code> は <code>a.+(b)</code> と意味的に同じで、引数 b を持つ a のメソッド + を呼び出すことになります。
+1,904
→キーワード: Crystalのキーワード( ''keywords'' ) は、以下の通り。 <code>abstract</code> <code>alias</code> <code>as</code> <code>asm</code> <code>begin</code> <code>break</code> <code>case</code> <code>class</code> <code>def</code> <code>do</code> <code>else</code> <code>elsif</code> <code>end</code> <code>ensure</code> <code>enum</code> <code>extend</code> <code>for</code> <code>fun</code> <code>if</code> <code>include</code> <code>instance_sizeof</code> <code>lib</code> <code>macro</code> <code>module</code
+1,115
2022年7月21日 (木)
2022年7月20日 (水)
→繰返し: Fix inner ln
+6
→型による分岐: when 節が式ではなく型であった場合、caseの式を <code>is_a?</code> で評価し、最初に一致した when に対応する式が実行されます。
+2,436
→制御構造: Crystalの実情に合わせて変更
−1,276
→https://ja.wikibooks.org/w/index.php?title=Ruby&oldid=205564#%E5%88%B6%E5%BE%A1%E6%A7%8B%E9%80%A0 から移入
+12,287
→包含と継承: 冗長な p メソッドを整理、inspect メソッドを実装。
−488
→包含と継承: 「Crystalらしいコード」に変更
−190
→包含と継承: JavaScript/クラス#包含と継承を、Rubyに移植したRuby#包含と継承を、Crystalに移植しました。
+1,868
→マ入れ子のp!: マクロ p! は入れ子に出来ます。また、一旦ASTに変換してから再度ソースコードに変換するので、等価な別の構文に変換されることがあります。
+602
2022年7月19日 (火)
→クラス: 初期化メソッドの説明をシンプルなクラスに移動
−12
→シンプルなクラス
+446
→マクロ p!: メソッド p は、与えられた「式」の inspaect() の返す値を puts しますが、マクロ p! は、それに先んじて(評価前の)「式」を表示します<ref>[https://crystal-lang.org/api/1.5.0/Crystal/Macros.html#p%21%28%2Aexpressions%29%3ANop-instance-method def p!(*expressions) : Nop]</ref>。
+846
→eval()がない: Crystal には eval() はありません。 Crystalはコンパイル型言語ですので、無理もないことです。 もし、Crystal で eval() を実装しようとすると、Common Lisp の様にインタープリターを丸ごとランタイムに含む必要があります。これはリーズナブルな選択ではありません。 Crystal では、eval() が必要なケースに(限定的ですが)マクロを使うことが出来る可能性があります。
+507
→Ruby との違い: <ref>[https://crystal-lang.org/reference/1.5/syntax_and_semantics/macros/ Macros - Crystal]</ref>→BigInt
+1,318
2022年7月18日 (月)
→ユーザー定義クラス: Ruby#ユーザー定義クラスの都市間の大圏距離を求めるメソッドを追加した例を、Crystalに移植しました。
+4,226
→マクロ: Crystalには、Rubyにはないマクロがあります。Rubyは実行時にすべてのオブジェクトにアクセス出来て、メソッド生やし放題なのでマクロは必要ありませんが、Crystalはコンパイル時に型やmwソッドを確定する必要があり、特にメソッドジェネレターとしてのマクロにニーズがあります。また、テンプレート的な機能を持ったマクロなので、コンテナを渡し繰返し処理する構文もマクロにあります(面白いことにマクロには for 文があり、反対にマクロの中では、eachメソッドは使えません)。
+1,864
→for式がない?!: Crystal には、Ruby にはある for式がありません。
+1,004