キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (12) -
NEWS for Ruby 2
. 1 . 0 (12) -
NEWS for Ruby 2
. 3 . 0 (10) -
NEWS for Ruby 2
. 6 . 0 (7) -
NEWS for Ruby 2
. 7 . 0 (6) -
NEWS for Ruby 3
. 0 . 0 (5) - Ruby プログラムの実行 (12)
- Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (12)
- Rubyの起動 (12)
- Win32ネイティブ版 (12)
- pack テンプレート文字列 (12)
-
ruby 1
. 6 feature (12) -
ruby 1
. 8 . 4 feature (12) -
ruby 1
. 9 feature (12) - セキュリティモデル (12)
- メソッド呼び出し(super・ブロック付き・yield) (12)
- リテラル (12)
- 制御構造 (12)
- 変数と定数 (12)
- 正規表現 (12)
- 演算子式 (12)
- 環境変数 (12)
検索結果
-
変数と定数 (3085.0)
-
変数と定数 * local * instance * class * class_var_scope * global * pseudo * const * prio
...変数と定数
* local
* instance
* class
* class_var_scope
* global
* pseudo
* const
* prio
Ruby の変数と定数の種別は変数名の最初の一文字によって、
ローカル変数、
インスタンス変数、
クラス変数、
グローバル変数、
定数
のい......//emlist[][ruby]{
# (A) の部分はスコープに入らない
2.times {
p defined?(v) # (A)
v = 1 # ここ(宣言開始)から
p v # ここ(ブロックの終り)までが v のスコープ
}
# => nil
# 1
# nil <- これが nil であることに......//}
宣言は、たとえ実行されなくても宣言とみなされます。
//emlist[][ruby]{
v = 1 if false # 代入は行われないが宣言は有効
p defined?(v) # => "local-variable"
p v # => nil
//}
===[a:instance] インスタンス変数
//emlist[例][ruby]{
@foobar
/... -
Ruby プログラムの実行 (3001.0)
-
Ruby プログラムの実行 === Ruby プログラム
...ss を継承します。Module#module_eval/class_eval、
BasicObject#instance_eval
の三つだけが例外で、以下のように変更されます。
: Module#module_eval, Module#class_eval
self、class ともそのレシーバ
: BasicObject#instance_eval
self がそのレシーバ、cla......ss がそのレシーバの特異クラス
==== eval
eval の第二引数に Proc オブジェクトまたは Binding オブ
ジェクトを与えたときは、その生成時のブロックのうえで文字列を評価します。
==== メソッドの実行
メソッドの実行はフレー......数に代入します。
さらに、ブロック引数 blockvar が存在するならば、メソッドに与えら
れたブロックを Proc オブジェクト化してトップレベルブロック上のロー
カル変数 blockvar に代入します。ブロックが与えられていないな... -
Win32ネイティブ版 (3001.0)
-
Win32ネイティブ版 Win32 版 Ruby を Cygwin 版と比較すると以下の利点があります。
...いては platform/mswin32-compat も参照してください。
現在 Win32 ネイティブな Ruby で広く配布されているものには、
Visual C++ で構築した platform/mswin32 版と
gcc でコンパイルした platform/MinGW 版の 2 種類があります。
また ruby 1.7 から......りません。
ただし Ruby 1.6 以前ではそれぞれで DLL 名が違うので、
拡張ライブラリは流用できません。
つまり VC++ でコンパイルした拡張ライブラリは
mswin32 版の ruby でしか使えないということです。
この点は Ruby 1.8 以降で... -
セキュリティモデル (3001.0)
-
セキュリティモデル RubyにはCGI等のプログラミングを安全に行うことを助ける為に、セキュリティ 機構が備わっています。
...を現在の値より小さく変更する事はできない
//emlist{
$ ruby -e '$SAFE = 1; $SAFE = 0'
-e:1: tried to downgrade safe level from 1 to 0 (SecurityError)
//}
原則として、各セキュリティレベルにはそれ以下のセキュリティレベルの制限も
適用......ーフレベルです。
===== 汚染されるオブジェクト
* IOや環境変数、コマンドライン引数(ARGV)から得られた文字列
$ ruby -e 'p ARGV[0].tainted?' hoge
true
環境変数PATHだけは例外で、値に危険なパスを含む場合のみ汚染さ......列を引数とした以下の操作
* Dir, IO, File, FileTest のメソッド呼び出し
//emlist{
$ ruby -e '$SAFE = 1; open(ARGV[0])' hoge
-e:1:in `initialize': Insecure operation - initialize (SecurityError)
from -e:1
//}
* ファイルテス......ど)
* Kernel.#eval
* トップレベルへの Kernel.#load (第二引数を指定してラップすれば実行可能)
* Kernel.#require
* Kernel.#trap
==== レベル 2
廃止されました。
==== レベル 3
廃止されました。
====[a:level4] レベル 4
廃... -
環境変数 (3001.0)
-
環境変数 Rubyインタプリタは以下の環境変数を参照します。
...t{
$ RUBYOPT=-y ruby -e ""
ruby: invalid switch in RUBYOPT: -y (RuntimeError)
//}
sh系
//emlist{
RUBYOPT='-Ke -rkconv'
export RUBYOPT
//}
csh系
//emlist{
setenv RUBYOPT '-Ke -rkconv'
//}
MS-DOS系
//emlist{
set RUBYOPT=-Ke -rkconv
//}
: RUBYPATH
-S オプショ......//emlist{
RUBYPATH=$HOME/ruby:/opt/ruby
export RUBYPATH
//}
csh系
//emlist{
setenv RUBYPATH $HOME/ruby:/opt/ruby
//}
MS-DOS系
//emlist{
set RUBYPATH=%HOMEDRIVE%%HOMEPATH%\ruby;\opt\ruby
//}
: RUBYLIB
Rubyライブラリの探索パス$:のデフォル
ト値......t{
RUBYLIB=$HOME/ruby/lib:/opt/ruby/lib
export RUBYLIB
//}
csh系
//emlist{
setenv RUBYLIB $HOME/ruby/lib:/opt/ruby/lib
//}
MS-DOS系
//emlist{
set RUBYLIB=%HOMEDRIVE%%HOMEPATH%\ruby\lib;\opt\ruby\lib
//}
: RUBYSHELL
この環境変数は platform/mswin32版、pla... -
pack テンプレート文字列 (145.0)
-
pack テンプレート文字列
...システム依存の short, long のサイズにすることもできます。
i, I (int)のサイズは常にシステム依存であり、n, N, v, V
のサイズは常にシステム依存ではない(!をつけられない)ことに注意してください。
つまり、IO#ioctl などで C......ネットワークプロトコルやファイルフォーマットのように、
システムに依存しないデータを扱うときには
n, N, v, V を用います。
強制的にエンディアンを指定したいときは、
リトルエンディアンなら < を、
ビッグエンディ......依存 (ネットワークプロトコルなどに適切)
//emlist{
n: big endian unsigned 16bit
N: big endian unsigned 32bit
v: little endian unsigned 16bit
V: little endian unsigned 32bit
//}
: エンディアン依存、整数サイズ依存 (C の構造体などに適切)
//emlist{
s!... -
ruby 1
. 6 feature (85.0) -
ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。
...ruby 1.6 feature
ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン
になります。
((<stable-snapshot|URL:ftp://ftp.netlab.co.jp/pub/lang/ruby/stable-snapshot.tar.gz>)) は、日々更新される安定版の最新ソースです。
== 1.6.8 (2002-12-24) ->......((<ruby-talk:40337>)), ((<ruby-core:00019>))
: 2002-09-11: Queue#((<Queue/pop>))
Queue#pop に競合状態の問題がありました ((<ruby-dev:17223>))
: 2002-09-11: SizedQueue.new
引数に 0 以下を受けつけるバグが修正されました。
: 2002-09-05: ((<リテラル/式展......002-09-11: ((<tempfile/Tempfile#size>))
追加 ((<ruby-dev:17221>))
: 2002-09-09
mswin32 版と mingw32 版の ruby で、1.6.6の頃から ruby の子プロセスに環境変数が渡らない
バグがありました。((<ruby-dev:18236>))
: 2002-09-03
Bison を使用してコンパ... -
メソッド呼び出し(super・ブロック付き・yield) (49.0)
-
メソッド呼び出し(super・ブロック付き・yield) * super * block * yield * block_arg * numbered_parameters * it * call_method
...(Method)がブロック
としてメソッドに渡されます。詳細は block を参照してください。
メソッド呼び出しの際、private なメソッドは関数形式(レシーバを省
略した形式)でしか呼び出すことができません。また protected なメソッ......す。
//emlist[][ruby]{
# 1引数の手続き(その働きは引数をpで印字すること)を生成し、変数pobjに格納
pobj = proc {|v|
p v
}
[1,2,3].each(&pobj) # 手続きオブジェクトをブロックの代わりに渡している
# => 1
# 2
# 3
//}
to_proc メソッドを......し時に実
行され、Proc オブジェクトを返すことが期待されます。
//emlist[][ruby]{
class Foo
def to_proc
Proc.new {|v| p v}
end
end
[1,2,3].each(&Foo.new)
# => 1
# 2
# 3
//}
ブロック付きメソッドの戻り値は、通常のメソッドと同様です... -
演算子式 (49.0)
-
演算子式 * assign * selfassign * multiassign * range * range_cond * and * or * not * cond
...す。
//emlist[例][ruby]{
class C
def initialize
@ary = [0,1,2,3,4,5,6,7]
end
def [](i)
@ary[i * 2]
end
def []=( i, v )
@ary[i * 2] = v
end
end
c = C.new
p c[3] # c.[]( 3 ) に変換され、その結果は 6
p c[3] = 1 # c.[]=(3,1) に変換され、その結果は......= というメソッドを、式 2 を引数にして呼び出します。
//emlist[例][ruby]{
class C
def foo
@foo
end
def foo=( v )
@foo = v
end
end
c = C.new
c.foo = 5 # c.foo=( 5 ) のように変換される
p c.foo # => 5
//}
属性は Module#attr を使って同じ......な形式の代入式も多重代入にすることができます。
//emlist[][ruby]{
class C
def foo=( v )
@foo = v
end
def []=(i,v)
@bar = ["a", "b", "c"]
@bar[i] = v
end
end
obj = C.new
obj.foo, obj[2] = 1, 2 # @foo = 1; @bar = ["a", "b", 2]
//}
左辺が `,' で終...
