タグ

ブックマーク / qiita.com/arcage (4)

  • [Crystal] 「ハッシュ」っぽい型 - Qiita

    「配列」っぽい型に続いて「っぽい型」シリーズ第二弾(おそらく打ち止め)です。 上の記事ではArrayっぽい型をいくつかご紹介しました。Arrayほどではないにしろ,Arrayと並ぶコレクション界の雄「Hash」にも1つだけ「っぽい型」が存在します。 NamedTuple(**T) NamedTupleは,NamedTuple.fromにHashを与えて生成できるほか,{key: value, ...}というリテラル構文を持っています。後者の構文は,RubyではシンボルをキーとしたHashのリテラル構文ですが,Crystalでは{:key => value}と{key: value}が異なる型(前者はHash,後者はNamedTuple)のオブジェクトになるので注意が必要です。

    [Crystal] 「ハッシュ」っぽい型 - Qiita
  • [crystal] Ruby書きが躓いた小石集 - Qiita

    これは,Crystal Advent Calendar 2015 12月7日分の記事です。 はじめに Ruby の文法に強くインスパイアされ,シンプルなものであれば Ruby スクリプトがそのまま動いてしまうこともある Crystal ですが,それだけに思わぬところで Ruby の流儀が通用しなくて戸惑うことがあります。 例えば,暗黙の文字列変換を指定しようとして#to_sをオーバーライドしても予想通りの動きをしないとか,初期化のタイミングによってインスタンス変数がコンパイラにnilableだと判断されるなどなど。 たいていの問題はドキュメントやAPIリファレンスをじっくり読むと解決したりするのですが,縁あって「Crystal Advent Calendar 2015」にお誘いいただいたので,個人レベルで数年に渡って日曜プログラミングとしてRubyと付き合ってきた人間が,Crystal で

    [crystal] Ruby書きが躓いた小石集 - Qiita
  • [Crystal] クラス定義周りの便利マクロ - Qiita

    追記あり Crystal Advent Calendar 2015のネタを書くにあたって,改めてドキュメントやAPIリファレンスを読み返してみると,クラス定義周りのマクロが非常に充実していることに気づいたので,備忘録代わりにまとめてみました。 はじめに 自作クラスを定義しようとすると,お約束のように定義することになるメソッドがいくつか存在します。 インスタンス変数に対するアクセサなどはRubyでも専用の書式が用意されていましたが,Crystalではそれだけでなく等価演算子 #==,Hashキーの同一性チェックに使用される#hash,さらにはインスタンス変数へのメソッドの移譲についてまでマクロが用意されています。 アクセサ定義 アクセサ定義系のマクロには,対象とするインスタンス変数名をシンボルリテラル(:name),文字列リテラル("name"),もしくは名前ベタ書き(name)で指定します

    [Crystal] クラス定義周りの便利マクロ - Qiita
  • [Crystal] 「自分が使いたいから」公開したライブラリ達 - Qiita

    ここのところすっかりCrystalにどっぷりで,趣味仕事にと汎用性のないCrystalのコードを書き散らかしているʕ•ᴥ•ʔAKJです。 とはいえ,普段は手元のMacBookでコードを書いて,それらを使うのは別のLinuxサーバ(複数)という環境のため,サーバ個別の機能はともかく共通部品をそれぞれのサーバへ展開するのが結構手間,という状況が出てきました。 CrystalにはRubyのGem(+Bundler)に相当するShardという仕組みが標準で用意されていて,GitHubなどで公開されている標準添付以外のライブラリを,自分のプロジェクトへ比較的簡単に追加することができるのですが,自作のライブラリをShardとして公開するのも比較的簡単に行うことができます。実際,crystal init lib で作成される雛形上にコードを書いて,GitHubに公開したらそれだけで別プロジェクトからS

    [Crystal] 「自分が使いたいから」公開したライブラリ達 - Qiita
  • 1