18. ########## 6 キーワードについて ##########
特別扱いされるキーワードたち
__LINE__ case ensure not then
__ENCODING__ class false or true
__FILE__ def for redo undef
BEGIN defined? if rescue unless
END do in retry until
alias else module return when
and elsif next self while
begin end nil super yield
行頭に含まれている場合のみ特別扱いするキーワード
に近いトークン
=begin =end __END__
22. ########## 8 構文構造について ##########
#リテラルは式だそうだ
#複雑な値が書けるリテラル
[1,2,3] # 配列リテラル
{1=>"one",2=>"two"} # ハッシュリテラル
1..3 # 範囲リテラル
#式の見本
1 # 値が直接表現された式
x # これも式
x = 1 # 代入式
x = x + 1 # 2つの演算を含む式
23. # 以下の文も、専門的にいえば式です
print(Kconv.tosjis"whileテスト")
x = 0 # 初期化
while x < 10 do # この式がtrueである間は 以下の文を実行
if x == 5 then # この式がtrueなら
print(Kconv.tosjis"ifテスト") # この文を実行せよ
end # 条件分木の終了
print(x) # この文を実行
x += 1 # この文も実行
end # 繰り返しの終了
print"n"
# これらの文も、専門的にいえば式です
25. ########## 9 ブロック構造について ##########
3.times { print(Kconv.tosjis“はい…”) } # 中かっこで囲んだ場合
print"n" # 改行
3.times do # do endで囲んだ場合
print(Kconv.tosjis"はい…")
end
print"n" # 改行
1.upto(10) do |x|
print x
end
# ブロックには、正式にブロックと呼ばれるものと、本体と呼ばれるも
のがある
# 本体は、クラス定義、メソッド定義、whileループなどの内容を構成す
る文のリストにすぎない
# Rubyでは、本体は中かっこで囲まれない
26. #図式的な例
module Stats # モジュール
class Dataset # モジュール内のクラス
def initialize(filename) # クラス内のメソッド
IO.foreach(filename) do |line| # メソッド内のブロック
if line[0,1] == "#" # ブロック内のif文
next # ifの中の単純な文
end # ifの終わり
end # ブロックの終わり
end # メソッドの終わり
end # クラス本体の終わり
end # モジュール本体の終わり