ruby

rubyの可変長引数

メソッドの引数で*hogeが気になっていました。 *がついている引数を可変長変数といいます。 意味 コンピューターで,処理単位の長さを変えられるようにしたもの。ファイルを小さくできる。 可変長(かへんちょう)とは - コトバンク メソッドでは、処理単位の…

with_indexについて

便利メソッドの紹介です。 railsでユニークな値をつけたいときには、with_indexを使えば簡単に実現できます。 pepole = %w(Bob Tom Lazy) pepole.each.with_index do |name, index| p "#{index}:#{name}" => "0:Bob" "1:Tom" "2:Lazy" end each_with_indexで…

スペースシップ演算子について

スペースシップ演算子(<=>)を初めて知りました。 巷では、宇宙演算子とも呼ばれているようです。 具体的な動作を見てみましょう。 役割 左辺の値が右辺よりも小さければ負の数、等しければ0、大きければ正の数を返す 基本的な動作です 100 <=> 10 => 1 100 …

includeとextendの違い

内容を見ていると同じに見えてしまう。 includeとextendの動きを見てみます。 両者の違い クラスのインスタンスメソッドとして取り込むことができる(include) そのオブジェクトにだけ特定の振る舞いを与えることができる(extend) ソースコードで試してみ…

privateメソッドの役割

呼び出し制限をかける場合に、privateメソッドを使っていました。 しかし、曖昧なまま使っており、privateメソッドの正しい役割を知りませんでした。 メソッドの役割 レシーバを省略する形でしか呼び出せない 具体例を出します class Greet def hello puts '…

rubyメソッドの感嘆符の慣習

最近パーフェクトrubyを読んでいます。 自分の中で、新しい気づきが多いので、備忘録として書いています。 rubyの使われ方 感嘆符をつける意味は、注意を促すときに使用される傾向があります。 今回の例では、reverseメソッドで説明します。 reverse は自身…

ruby ||= の意味

自分の備忘録も兼ねて書きます。 railsではよく||=をよく見かけます。 訳すと、「あるいはか、代入する」という意味です。 自分はこれを理解するのに大分時間がかかりました。 何回見ても直感的に分からなかったです。 railstutorialにも概要が載っているの…

railsでclassにactiveを付けるhelperの作成方法

jsを使っていたりする場合、よくここにいるという、表示でclassactiveをつけたりします。 その判別方法をhelperで作成します。 app/helpers/application_helper.rb def active?(controller_name, controller_action) if controller_name == params[:controll…

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問の1問目

1日1問ぐらいのペースで解いていきたい。 まず、1問目から普通に難しい・・・ これ、10分で解答せよって書いてあったけど、みんなできるのか? Q.1 10進数で回文 10進数、2進数、8進数のいずれで表示しても回文となる数のうち、10進数の10以上で最小の値を求…

匿名掲示板向けのID作成方法

匿名掲示板を運営しようとした場合、荒らしの問題が考えられます。 抑止策として、次のことが考えられます。 アクセス制限 IPアドレスの開示 書き込みを削除する ただし、今回はこういった方法を取らずに、某掲示板のようにIDを生成すればいいのでは?と思い…

rubyのラムダ式

ラムダ式ってご存知でしょうか? 自分は全く知りませんでした。 C言語の参考になりますが、概念として書かれていたので、載せておきます。 参考:ラムダ式 (C# プログラミング ガイド) ラムダ式は、デリゲート型または式ツリー型を作成するために使用できる…

rubyのヒアドキュメントの書き方

複数行の文字列を扱う場合、ヒアドキュメントを書くとすっきりと見せれることができます。 書き方は、次のようになります。 <

rubyのsendメソッドについて

rubyのsendメソッドは動的にメソッドを呼べるということで、試してみました class Hoge class << self def say(name, age) if age.empty? puts "my name is #{name}, age is secret" else puts "Hello, #{name}, #{age}" end end def hello puts 'Hello worl…

rubyのクラスメソッドの定義の仕方

最近になってようやく人のソースコードを読むということにチャレンジしています。 そんな時によく出るのが、class << selfというもの これの意味がわからなくて、詰まっていたので調べてみました。 そもそも、クラスメソッドの定義の仕方が分かればいいので…