UNIX 系 OS 上で EUC を使用している場合、ruby -Keを
UTF-8N を使用している場合、ruby -Kuを指定する必要があります。
だそうです。
#! ruby -Ks
#! ruby -Ks
class A
def hoge
puts "public Aクラスのhoge"
end
public :hoge
end
AA = A.new
AA.hoge
# 結果
# Aクラスのhoge(public)
class A
def hoge
puts "Aクラスのhoge(public)"
end
public :hoge
def hoge2
puts "Aクラスのhoge2(private)"
end
private :hoge2
end
AA = A.new
AA.hoge
AA.hoge2
# 結果
# Aクラスのhoge(public)
# hoge2へはアクセスできない(private method `hoge2' called)
# 特異メソッドの例
foo = "ミスターFOO"
def foo.say(name)
puts self + "「こんにちは#{name}」"
end
foo.say("子猫ちゃん")
# 結果
# ミスターFOO「こんにちは子猫ちゃん」
# 通常のクラス定義
class A
def hoge
puts "ほげほげ"
end
end
AA = A.new
AA.hoge
# クラスのインスタンスから特異メソッドを追加
def AA.voice(name)
puts "#{name}「ポウ!」"
end
AA.voice("ミスターHOGE")
# 結果
# ほげほげ
# ミスターHOGE「ポウ!」
$var = "グローバルhoge"
class A
def hoge
puts $var
end
end
cls = A.new
cls.hoge
# 結果
# グローバルhoge
class A
@@ClassHoge = "クラス変数hoge"
def hoge
puts "Aクラスのhoge"
end
end
class B < A
def hoge
puts @@ClassHoge
end
end
cls = B.new
cls.hoge
# 結果
# クラス変数hoge
class A
@InstanceHoge = "クラス変数hoge"
def hoge
puts "Aクラスのhoge"
end
end
class B < A
def hoge
puts @InstanceHoge
end
end
class C < A
def hoge
@InstanceHoge = "書き換えたhoge!"
puts @InstanceHoge
end
end
BB = B.new
BB.hoge
CC = C.new
CC.hoge
# 結果
# nil
# 書き換えたhoge!
class A
def hoge
foo = "ローカル変数"
puts foo
end
end
cls = A.new
cls.hoge
# 結果
# ローカル変数
# 上記の例で、変数名のみ表記した場合はエラーとなる
class A
def hoge
puts "Aクラスのhoge"
end
end
class B < A
def hoge
puts "Bクラスのhoge"
end
end
cls = B.new
cls.hoge
# 結果
# Bクラスのhoge
class A
def hoge
puts "Aクラスのhoge"
end
end
class B < A
def hoge
super
puts "Bクラスのhoge"
end
end
cls = B.new
cls.hoge
# 結果
# Aクラスのhoge
# Bクラスのhoge
s = " もじれつ"
puts s # もじれつ
#通常のメソッド
s = " もじれつ"
s = s.strip
puts s #もじれつ
# 破壊的メソッド
s = " もじれつ"
s.strip!
puts s #もじれつ
int i = 1234;
// 01234 (0でPadLeftと同じ)
Console.WriteLine(i.ToString("00000"));
// 1234
Console.WriteLine(i.ToString("#####"));
// 1,234
Console.WriteLine(i.ToString("##,###"));
// 12234: プラス1234
// -1234: マイナス1234
// 0: ゼロ
Console.WriteLine(i.ToString("プラス#;マイナス#;ゼロ"));
// 12234: +1234
// -1234: -1234
// 0: 0
Console.WriteLine(i.ToString("+#;-#;0"));
// 数値1234
Console.WriteLine(i.ToString("数値: #"));
Format("20090911", "GGGE年M月D日")
' オーバーフローしました
Format("2009/09/11", "GGGE年M月D日")
' OK