タグ

Rubyとvarに関するkiyo_hikoのブックマーク (6)

  • Rubyの多重代入について -- ぺけみさお

    Rubyでは変数に代入を行う際に、右辺と左辺の式をカンマで区切ってやると、複数の変数への代入を1行で記述できる。 これは多重代入と呼ばれており、多重代入を使うことで変数の初期化を簡潔に書くことができる。 以下は変数aとbを、それぞれ1と2で初期化する例である。

    kiyo_hiko
    kiyo_hiko 2016/02/15
    左辺.length > 右辺.lengthで不一致はnil割当て、左辺.length < 右辺.lengthは右辺切捨て // car, *cdr = list; // swapできるらしい a, b = b, a
  • ローカル変数の一覧の表示 - 君の瞳はまるでルビー - Ruby 関連まとめサイト

    kiyo_hiko
    kiyo_hiko 2016/01/26
    variables = binding.eval('local_variables').inject({}) { |h, vname| h[vname] = binding.eval(vname.to_s); h }
  • 初めてのRubyを読む その36 7.3 - ウィリアムのいたずらの、まちあるき、たべあるき

    ウィリアムのいたずらが、街歩き、べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も) 「初めてのRuby」を読むの続き 7章 メソッド 7.3 ブロック付きメソッド から ■7.3 ブロック付きメソッド ・メソッド呼び出しにはブロックを付加できる →引数とともにメソッドに引き渡される ・ブロック付きメソッド呼び出しの主な用途は3つ →ループの抽象化:2章 ブロックへの機能追加。典型的にはリソース管理:5章 コールバック関数・イベントハンドラ:Arrays.sort ・ブロックの数 ・複数のブロックが必要になる場合はほとんどないことが 歴史的に知られている →どうしても必要な場合は、Proc.newやlambdaを使う ■7.3.1 クロージャーとしてのブロック ・ブロックがクロージャーとして振舞っている →ブロック内に現れる自由変数はブロックの外部環境に従う →ブ

    初めてのRubyを読む その36 7.3 - ウィリアムのいたずらの、まちあるき、たべあるき
    kiyo_hiko
    kiyo_hiko 2016/01/19
    "ブロック内に現れる自由変数はブロックの外部環境に従う…ブロック内で変数を書き換えると、外部にも影響する"
  • ループ構文内外とブロック内外でのスコープの違いについて - Qiita

    的なスコープの違いを正しく理解できていませんでした。 以下にまとめました。 スコープを作らないグループ(for, while) for ループ構文の内外でスコープは変わらない。 forで渡す式はブロックではない

    ループ構文内外とブロック内外でのスコープの違いについて - Qiita
    kiyo_hiko
    kiyo_hiko 2016/01/19
    "forに渡す式はブロックではない!"
  • 変数と定数 (Ruby 3.3 リファレンスマニュアル)

    [edit] ローカル変数 インスタンス変数 クラス変数 クラス変数のスコープ グローバル変数 擬似変数 定数 定数参照の優先順位 Ruby の変数と定数の種別は変数名の最初の一文字によって、ローカル変数、インスタンス変数、クラス変数、グローバル変数、定数のいずれかに区別されます。通常の変数の二文字目以降は英数字または _ですが、組み込み変数の一部には「`$'+1文字の記号」という変数があります(組み込み変数を参照)。変数名の長さにはメモリのサイズ以外の制限はありません。 ローカル変数 例 foobar 小文字または`_'で始まる識別子はローカル変数またはメソッド呼び出しです。ローカル変数スコープ(クラス、モジュール、メソッド定義の体)における小文字で始まる識別子への最初の代入はそのスコープに属するローカル変数の宣言になります。宣言されていない識別子の参照は引数の無いメソッド呼び出しとみ

    kiyo_hiko
    kiyo_hiko 2016/01/19
    一見評価されない変数代入式でも変数は宣言される ∴ false and var = 999; p var # => nilなので宣言されたことわかる。もし宣言されていなければvarはアリティ0なメソッドの呼び出しに評価され、NameErrorになる
  • Ruby で変数宣言がほしい、とな? - kなんとかの日記

    Ruby にも変数宣言があったほうがいいよね、という話。 Thor タスクを書いていて desc "load KVS_FILE", "load data from given KVS file" def load(kvs_file) case kvs_file when "shift" ksv_file = Dir.glob("kvs/requests/*").sort.first when "pop" ksv_file = Dir.glob("kvs/requests/*").sort.last end p kvs_fileload("shift") しても "shift" が表示されちゃう謎の現象に遭遇。 実は Thor は引数を symbol とか特別なオブジェクトにしてる? あれ、case 文って文字列直接はダメだっけか?(classみたいに) とか色々調べること10分。原因に気付

    Ruby で変数宣言がほしい、とな? - kなんとかの日記
    kiyo_hiko
    kiyo_hiko 2012/10/24
    Perlで宣言なし変数のめんどくささをつぶさに見てきたのであるとうれしそう
  • 1