削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎Setオブジェクト: Setオブジェクトは集合です。任意の Crystal オブジェクトを要素として持つことができますが、1つの値は重複して持てません。 Set.newに配列式<code>{ 要素1, 要素2, … 要素n }</code> などを渡し初期化します。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
ln
タグ: 2017年版ソースエディター
7 行
|accessdate=2022-07-18
|website=github.com
}}</ref>。[[Ruby]] にヒントを得た構文を持ち、[[W:静的型付け|静的型チェックを備えた 付け]]な[[w:コンパイル型言語]]ですが、変数やメソッドの引数の型は一般には不要です。型は高度なグローバル[[型推論]]アルゴリズムによって解決される。<ref>{{Cite web
|url=http://crystal-lang.org/2013/09/23/type-inference-part-1.html
|title=Type inference part 1
15 行
|accessdate=2022-07-18
|website=crystal-lang.org
}}</ref>Crystalは[[W:Apache License|Apache License]]バージョン2.0のもと、[[W:FOSS|FOSS]]としてリリースされています。
 
__TOC__
 
== Hello, World! ==
お約束の[[W:Hello world|Hello_world]]ですが、ここではRubyとの比較も兼ねて、[[Ruby#Hello, World!]]をそのまま実行してみます。
他の多くのチュートリアルがそうであるように、
私たちもまずはCrystalの世界にあいさつすることから始めましょう。
 
''hello.cr''というファイル作り、次のように書いて保存用意て下さいます<ref>Crystalのソースファイルの拡張子は''.cr'' です</ref>。
Rubyとの比較も兼ねて、[[Ruby#Hello, World!]]をそのまま実行してみます。
 
''hello.cr''というファイルを作り、次のように書いて保存して下さい<ref>Crystalのソースファイルの拡張子は''.cr'' です</ref>。
 
;hello.cr:<syntaxhighlight lang=Crystal>
puts 'Hello, World!'
</syntaxhighlight>
 
中身を確認して実行してみます。
 
;コマンドラインでの操作:<syntaxhighlight lang="console">
47 ⟶ 46行目:
Hello, World!
</syntaxhighlight>
: Crystalでは、文字列の場合は二重引用符(")を使用するので、' を " に sed で置換えました。
この1行のスクリプトは、メソッド<code>puts</code> に文字リテラル<code>"Hello, World!"</code>を渡し呼出しています。
:: 修正後の hello.cr も問題なく ruby で実行できます。
 
このプログラムは、[[Ruby#Hello, World!]]と同じですが、Crystalでは文字列リテラルは <code>"…"</code> で囲うのでそれだけ変更しました。
 
== プログラミング環境 ==
70 ⟶ 68行目:
=== crystal コマンド ===
crystal コマンドは Crystal のコンパイラであると同時に、ビルドツールなどを含んだツールチェインです(プログラミング言語のCrystalは、先頭を大文字、コマンドのcrystalは、先頭を小文字にして区別します)。
 
 
[TODO: コマンドラインツール crystal の解説。 crystal ファイル名 は crystal run ファイル名 の短縮形で、インタープリタ的な実行…ではなく、内部ビルドツールでコンパイル・実行を行う]