[#5219] ruby for perl users — Noritsugu Nakamura <nnakamur@...>

35 messages 1997/11/09
[#5220] Re: ruby for perl users — tateishi@... (Tateishi Takaaki) 1997/11/09

立石です。

[#5224] Re: ruby for perl users — shugo@... (Shugo Maeda) 1997/11/09

前田です。

[#5243] read from subprocess — Kikutani Makoto <kikutani@...>

きくたにです。

17 messages 1997/11/10
[#5250] Re: read from subprocess — matz@... (Yukihiro Matsumoto) 1997/11/11

まつもと ゆきひろです

[#5300] Win32用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...>

はじめまして、竹林といいます。

14 messages 1997/11/15
[#5302] Re: Win32用の Rubyでの tkの使用 — WATANABE Hirofumi <eban@...> 1997/11/15

わたなべです.

[#5303] Re: Win32 用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...> 1997/11/15

[#5305] Re: Win32 用の Ruby での tk の使用 — aito@...5sun.yz.yamagata-u.ac.jp 1997/11/17

あ伊藤です.

[#5320] ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

20 messages 1997/11/18
[#5337] Re: ruby 1.0-971118 released — WATANABE Hirofumi <watanabe@...> 1997/11/19

わたなべです.

[#5340] Re: ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#5398] 配列への追加について — a-nisida@... (西田明良)

はじめまして、西田@初心者 と申します。m(..)m

16 messages 1997/11/22

[ruby-list:5224] Re: ruby for perl users

From: shugo@... (Shugo Maeda)
Date: 1997-11-09 09:23:55 UTC
List: ruby-list #5224
前田です。

In message "[ruby-list:5220] Re: ruby for perl users"
Tateishi Takaaki <tateishi@sy.is.noda.sut.ac.jp> wrote:

|>> 問題かも知れませんが、多分こういうのをすぐに疑問に
|>> 感じると思うので…。
|
|でもやっぱりマニュアルにすべて載ってた
|ように思います。
|
|それを見ないでプログラムを組もうとする
|プログラマ(より一般的な意味で)はいない
|と思うのですが、、、、、

それはそうなのですが,Perlから以降する人のためのFAQが
あればruby普及に役立つかも,と思ったりもしますね(^^;

Perl使いでないので間違えてるかもしれませんが,一応
回答を試んでみます。

In message "[ruby-list:5219] ruby for perl users"
Noritsugu Nakamura <nnakamur@mxq.meshnet.or.jp> wrote:

|◎ Perl だと
|$name = "Nakamura";
|print "I am $name\n";
|とか書いてましたが、
|ruby ではどう書くのですか?
|print "I am $name\n";
|と書いてもうまくいきませんが。

print "I am #{$name}\n"

のように${と}で括ってください。
グローバル変数($nameとか)やインスタンス変数(@nameなど)の
場合は,

print "I am #$name\n"

のように{と}を省略できます。

|◎ 文字列の連結
|$hoge = "foo" . "bar";
|ってやっていましたが、ruby ではどう書くの?

rubyの場合はオブジェクトが自分のデータ型(つまりクラス)を
知っているので,数値でも文字列でも+で適切な動作をします。

rbc0> 1 + 2
3
rbc0> "1" + "2"
"12"

|◎ 部分文字列を切り出したいのですが、substr は?

self[offset, length]

で部分文字列を取り出すことができます。

rbc0> "0123456"[2, 3]
"234"

self[firstIndex...lastIndex]

でもOKです。

rbc0> "0123456"[2..4]
"234"

|◎ chop, chomp はありますか?

rbc0> "abc".chop
"ab"

でOKです。
# chompって?

|◎ 文字列比較 eq, ne とかありますか?

文字列の比較も数値同様==でOKです。

rbc0> str1 = "abc"
"abc"
rbc0> str2 = "abc"
"abc"
rbc0> str1 == str2
true

rubyでは==は同値を意味します。
オブジェクトの同一性を調べたい場合はequal?を使って
ください。

|◎ 配列の初期化とアクセスはどうやったら?

rbc0> array = ["a", "b", "c"]
["a", "b", "c"]
rbc0> array[0]
"a"
rbc0> array[0] = "A"
"A"
rbc0> array[0]

|◎ 連想配列の初期化は?
|%hogehoge = ('smtp' , '25', 'finger', '79');
|のような…。

rbc0> hash = {"smtp"=>25, "finger"=>79}
{"smtp"=>25, "finger"=>79}

とします。

|◎ 連想配列のアクセスは?

rbc0> hash["ftp"] = 21
21
rbc0> hash["ftp"]
21

とします。

|◎ for($i = 0; $i < 3; $i++) { }
|とかはどう書けば良いの?

for i in 0..3
end

を使います。
配列のアクセスなどは

array.each do |item|
  ...
end

や

for item in array
  ...
end

を使った方が便利です。

|◎ foreach は使えるの?

eachやforを使ってください。

|◎ while(<>) { }
|とか良く使っていたのですが、
|これはどう書いたら良いの?

while(<>) {} の意味がわかんなかったりして(^^;

|◎ 置換したいのですが、s///; tr///; に
|相当するものはありますか?

Stringにsub,gsub,trなどのメソッドがあります。

|◎ 日本語は使えるの?

もちろん:-)
EUCを使っているかぎり何も考えなくても大丈夫です。
文字コードの変換にはKconvが利用できます。

|◎ サブルーチンと引数の扱い方は?

基本的には値渡しです。
ただ引数は呼び出し側と同じオブジェクトを参照しているので,
引数のオブジェクトの状態を変更するメソッドを呼び出した場合
は,呼び出し側のオブジェクトにも影響を与えます。

つまり

def upcase1(str)
  return str.upcase # upcaseはレシーバの状態を変更しない
end

def upcase2(str)
  return str.upcase! # upcase!はレシーバの状態を変更しない
end

str = "abc"
p upcase1(str)  # "ABC"
p str           # "abc"
p upcase2(str)  # "ABC"
p str           # "ABC"

となります。

|◎ ファイルの扱い方は?

だいたい,

f = open(filename)
while line = f.gets
  print line
end
f.close

みたいな感じです。

f = open(filename)
begin
  while line = f.gets
    print line
  end
ensure
  f.close
end

のように例外処理をすることが多いです。

-- 
前田 修吾

In This Thread