Rubyを学んでみる 第2回

とりあえずどんなコードがあるか読んでみることにする。

class ProductsController < ApplicationController
	def index
		@products = Product.find(:all)
		@genres   = Genre.find(:all)
	end

	def show
		@product = Product.find(params[:id])
	end
end

な に こ れ 超 わ か り づ れ え 。

なんとなくわかる部分すらない。
こりゃ苦労しそうだなあ・・・・ぜんぜん違う言語じゃないか・・・。
Objective-C以来の衝撃だわ。
これは後回しにしよう。

コメントの書き方

まずはこれが無いと始まらないな。

# ここからindexアクション

def index
	render :text => 'Hello Ruby!' # 指定した文字列を出力します
end

=begin
	こういうコメント方法もあるようです。
	「埋め込みドキュメント」の書き方を利用したものですが、
	複数行にわたってコメントする場合、これが便利かも。
=end

これは普通だな。#使う言語は今までやったこと無かったかもしれないけど。

さてと、本題に入るとするか。

返り値と代入

式の内容がコンピュータに処理されると、必ず何かしらの値を返します。
これを返り値とか戻り値とか言いますね。これは他の言語でもやったなあ。

代入

text_a = 'Ruby'
text_b = ' on ' + 'Rails'
text_c = text_a + text_b

はあー。セミコロンが無いとなんか違和感。
と思ってたら、1行で書くと

text_a = 'Ruby'; text_b = ' on ' + 'Rails'; text_c = text_a + text_b

明示的に式を区切ることができるのか。
しかしこれでもセミコロンが最後に無いことに違和感。
次の行に引き継げないパターンもあるのか。

text_b = ' on '
 + 'Rails'

これだダメなのね・・・。
PHPとかだと完全にOKなんだけどなあ。
text_b = ‘ on ‘
で完結していると考えられるのか。
バックスラッシュで次の行へ引き継ぎか。なるほど。

text_b = ' on ' 
 + 'Rails'

変数

ローカル変数

アルファベットの小文字で始まるまたは_(アンダースコア)で始まる。

text
_text
image_path

ほうほう数字はだめなのね。

グローバル変数

(例)

$text
$_text
$image_path

まじっすか。$つきで区別するんですね。
PHPを先にやっている自分としてはなんとも見分けづらい。

インスタンス変数

(例)

@text
@_text
@image_path

@がつくのか。なんだかObjective-Cを思い出す。

クラス変数

(例)

@@text
@@_text
@@image_path

この時点でギブアップしそう・・・。@@ですか・・・。
ここまで全て数字で始まるのはアウト。
アルファベットか_(アンダースコア)で始まらないといけない。

擬似変数

擬似変数?なんだこれ。

self
nil
true
false

のようなものらしい。これはまたあとで出てくるだろう。

定数

アルファベットの大文字で始まる。
視覚的に判別しやすくするため、多くの場合すべて大文字で定義するようだ。
一度定義された定数に再び代入を行うとエラーになる。

VERSION
RAILS_GEM_VERSION
IMAGE_PATH = '/images'

予約後

次の名前は予約後になっているため、変数名やクラス名で使用することは不可。

BEGIN class ensure nil self when END def false not super while
alias defined for or など

数値

数値は整数と浮動小数点数に分かれる。
整数の例

123
-123
n = 123 - 96 #nは27
n = -12 + 8 #nは-4

浮動少数の例

12.3
-12.3
n = 12.3 - 96.0 #nは-83.7
n = -12.0 + 8 #nは-4.0

文字列

シングルクオートかダブルクオートで囲む。

n = 'maroは' + 'おしゃんてぃ'

ダブルクオートだと式を展開することもできる。

text_a = 'maroは'
text_b =  '#{text_a}おしゃんてぃ'

#{}で式を展開する。つまり上記だと「maroはおしゃんてぃ」がtext_bに代入される。

バックスラッシュ記法

text = "はじめて"Ruby"を学ぶ。"

エスケープってやつですね。バックスラッシュ自体を記述したい場合は「」って書く。
クオートもエスケープしてるってことですね。上記は「」で「”」をエスケープしているから「はじめて”Ruby”を学ぶ。」がtextに代入されるってことですね。

%記法

text = %Q! ルビーオンレイルズを"学ぶ"。!
text = %q! ルビーオンレイルズを"学ぶ"。!
text = %Q( ルビーオンレイルズを"学ぶ"。)
text = %q( ルビーオンレイルズを"学ぶ"。)

これはどういうことかというと、「!」で囲まれた部分が「%Q」と書いてあるとダブルクオートと同等の効果で「%q」と書いてあるとシングルクオートと同等の効果が得られる。
「!」で囲まなくても英数字以外の文字列なら何でもいいそうだけど、ややこしいので「!」で覚えることにする。
また、括弧でも可能だそうだ。こっちの方がわかりやすいね。

配列

nums = [1, 1, 9, 2, 7, 9, 4, 5, 6, 8]
lang = ['ruby', 'php', 'java', 'C++']
chaos = [123, 'moji', lang, nums, VERSION]

これは他言語とそんなに違和感はないですね。

lang = ['ruby', 'php', 'java', 'C++']
x = lang[0] #xにrubyが代入される
x = lang[3] #xにjavaが代入される
lang[1] = javascript #lang[1]のオブジェクト(今までphpが入っていたところ)にjavascriptが代入される

これもいい感じ。

ハッシュ

連想配列のことだな。

browser = {'ie' => 'InternetExplorer', 'ff' => 'Firefox'}
name = browser['ff'] #nameにはFirefoxが代入される

これはPHPの時に何回もやったところだわ。
すごくよくわかる。しかし。
通常Railsでは主としてハッシュのキーにシンボルを利用する。

browser = {:ie => 'InternetExplorer', :ff => 'Firefox'}
name = browser[:ff] #nameにはFirefoxが代入される

なるほど。これはシンボルを使うパターンで覚えておこう。「:」をつけるということだ。
多少使用メモリの削減にもつながるらしい。
こういうことはすごく大事な気がしてきた。
軽いWEBアプリを作りたいしね。

コメントを残す