タグ

rubyとlistに関するkiyo_hikoのブックマーク (4)

  • How do I implement Common Lisp's mapcar in Ruby?

    I want to implement Lisp's mapcar in Ruby. Wishful syntax: mul = -> (*args) { args.reduce(:*) } mapcar(mul, [1,2,3], [4,5], [6]) would yield [24, nil, nil]. Here is the solution I could think of: arrs[0].zip(arrs[1], arrs[2]) => [[1, 4, 6], [2, 5, nil], [3, nil, nil]] Then I could: [[1, 4, 6], [2, 5, nil], [3, nil, nil]].map do |e| e.reduce(&mul) unless e.include?(nil) end => [24, nil, nil] But I'

    How do I implement Common Lisp's mapcar in Ruby?
    kiyo_hiko
    kiyo_hiko 2015/11/11
    zip使ってmapcarもどき作る話。zipはreciever.zip(the_other)で二次元配列になる
  • Array#sort (Ruby 3.3 リファレンスマニュアル)

    sort -> Array[permalink][rdoc][edit] sort! -> self sort {|a, b| ... } -> Array sort! {|a, b| ... } -> self 配列の内容をソートします。要素同士の比較は <=> 演算子を使って行います。sort はソートされた配列を生成して返します。 sort! は self を破壊的にソートし、self を返します。 ブロックとともに呼び出された時には、要素同士の比較をブロックを用いて行います。ブロックに2つの要素を引数として与えて評価し、その結果で比較します。ブロックは <=> 演算子と同様に整数を返すことが期待されています。つまり、ブロックは第1引数が大きいなら正の整数、両者が等しいなら0、そして第1引数の方が小さいなら負の整数を返さなければいけません。両者を比較できない時は nil を返します。

    kiyo_hiko
    kiyo_hiko 2015/11/11
    宇宙船演算子でソートする
  • Array#filter (Ruby 3.3 リファレンスマニュアル)

    select -> Enumerator[permalink][rdoc][edit] filter -> Enumerator select {|item| ... } -> [object] filter {|item| ... } -> [object] 各要素に対してブロックを評価した値が真であった要素を全て含む配列を返します。真になる要素がひとつもなかった場合は空の配列を返します。 ブロックを省略した場合は Enumerator を返します。 例 [1,2,3,4,5].select # => #<Enumerator: [1, 2, 3, 4, 5]:select> [1,2,3,4,5].select { |num| num.even? } # => [2, 4] [SEE_ALSO] Enumerable#select [SEE_ALSO] Array#select!

    kiyo_hiko
    kiyo_hiko 2015/11/11
    remove-if-notとかfilter的な // even_upto_10 = 1.upto(10).select { |n| n % 2 == 0 }
  • Ruby(Motion)でmethodsを使ってメソッド検索 - Qiita

    Rubyはirbでmethodsメソッドを使うことで、それぞれのオブジェクトに定義されているメソッドをインタラクティブに検索できて便利ですよね。 メソッド検索用メソッド一覧 でmethodsという単語を含むメソッドは以下の通りです。 #instance_methods (Module) #methods (Object) #private_instance_methods (Module) #private_methods (Object) #protected_instance_methods (Module) #protected_methods (Object) #public_instance_methods (Module) #public_methods (Object) #singleton_methods (Object)

    Ruby(Motion)でmethodsを使ってメソッド検索 - Qiita
    kiyo_hiko
    kiyo_hiko 2015/10/20
    Clazz.methods.grep /pattern/i // pry ls
  • 1