Crystal は nil.to_i がエラーになってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の14日目の記事です。 qiita.com Ruby では nil.to_i は 0 になりますが、Crystal ではコンパイル時エラーになります。 % crystal eval 'nil.to_i' Error in line 1: undefined method 'to_i' for Ni…

Crystal は宣言しただけだと値が未定義になってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の13日目の記事です。 qiita.com 昨日の記事に書いたように Crystal は変数を初期化せずに宣言だけすることができます。 ですが、宣言だけだと値は未定義です。未定義のまま参照すると例外が発生した…

Crystal のインスタンス変数が nilable になってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の12日目の記事です。 qiita.com Crystal で Ruby と同じような感覚でインスタンス変数を使うと nil だと怒られることがあります。 class Hoge def hoge @hoge = "abc" @hoge.size end end Hoge.new.…

Crystal は Ruby にあるメソッド名がなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の11日目の記事です。 qiita.com Ruby には同じ機能なのに複数の名前があるメソッドがありますが、Crystal は基本的に1機能に1メソッド名という方針のようです。 それにより Ruby にはあるのに Cryst…

Crystal は配列を展開した引数をメソッドに渡せなくてつらい?

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の10日目の記事です。 qiita.com Ruby だと、配列を展開してメソッドの引数にすることができます。 arg = [1, "abc", :foo] hoge(*arg) # hoge(1, "abc", :foo) と同じ Crystal だとこれはできません…

Crystal にはタプルがあってつらくない

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の9日目の記事です。 qiita.com 昨日の記事に「Tuple を使うとらくちんです」というコメントをもらいました。 タプルを使って書きなおしてみます。 [ { 1, "hoge" }, { 2, "fuga" }, { 3, "piyo" }, …

Crystal は配列内要素に対してすべての要素が持つメソッドしか呼び出せなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の8日目の記事です。 qiita.com Ruby だと、プログラマーが配列の1番目の要素は整数で、2番目の要素が文字列で…といったように決めて、次のようなコードを書いたりすることがあります。 [ [ 1, "hoge…

MIMEヘッダエンコーディングは複雑すぎてつらい

これは NSEG Advent Calender の7日目の記事です(内容は NSEG とも長野とも関係ありませんが…)。 www.adventar.org メールの送信者(From)や件名(Subject)は本来ASCII(の一部の文字)しか書くことができないんですが、MIME(RFC2047)の登場によって日本語等の非…

Crystal があちこちに .crystal というディレクトリを作ってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の7日目の記事です。 qiita.com Crystal を何の気無しに使っていると、気がつくと .crystal というディレクトリがあちこちにできています。 Crystal はコンパイル時に .crystal というディレクトリを…

Crystal は配列の範囲外の参照がエラーになってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の6日目の記事です。 qiita.com 1日目の記事で配列が自動拡張されなくてつらいと書いたんですが、配列の範囲外の参照もエラーになります。 array = [0, 1, 2] array[3] [4337095] *CallStack::unwind…

Crystal は日本語のドキュメントがあってつらくない!

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の5日目の記事です。 qiita.com 5日目にして既にネタ切れでもう Ruby は関係ないしつらくもないんですけど、Crystal アドベントカレンダーで日本語ドキュメントがあることを知りました。 www.adventa…

Crystal でも深さが不定の配列が作れてつらくない…?

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の4日目の記事です。 qiita.com 昨日の記事で、Crystal は深さが不定の配列が作れなくてつらいと書いたんですが、 実際にできないわけないだろうから方法を調べて4日目の記事にしようと思ってたとこ…

Crystal は深さが不定の配列が作れなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の3日目の記事です。 qiita.com Ruby の配列は任意の型のオブジェクトが入りますが、Crystal は特定の型しか入りません。 空配列を作ろうとするとエラーになります。 array = [] #=> Syntax error in…

「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました #nseg

理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)作者:奥野 幹也発売日: 2015/03/10メディア: 単行本(ソフトカバー) 11/28 に NSEG 第69回勉強会として「理論から学ぶデータベース実践入門」読書会スペシャ…

Crystal は実行時エラーでソース位置がわからなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の2日目の記事です。 qiita.com Ruby だと実行時にエラーが発生すると、エラーが発生したプログラムの位置が出力されるのですが、 def hoge raise "hoge" end hoge % ruby hoge.rb hoge.rb:2:in `hog…