Ruby 初心者スレッド Part 23
at TECH
[前50を表示]
100:デフォルトの名無しさん
08/11/29 16:31:09
>>97-98
ありがとう、おかげで念願のRubyPortableが完成した
(ファイルサイズを軽くするために、98のバッチファイル方式を採用させてもらいました)
101:デフォルトの名無しさん
08/11/29 16:32:10
>>99
> puts "path/file".gsub("/", "\\")
path\file
102:デフォルトの名無しさん
08/11/29 16:34:49
>>101
obj = 'j:/test/obj'
obj.gsub!("/", "\\")
p obj
"j:\\test\\obj"
となってしまいます。\\でも良いのかなぁ?コンソールの仕様?
103:デフォルトの名無しさん
08/11/29 16:36:59
>>102
ダブルクォーテーションもついてるぞ
104:デフォルトの名無しさん
08/11/29 16:37:10
pだから。
105:デフォルトの名無しさん
08/11/29 16:37:19
>"j:\\test\\obj"
"j:\test\obj"
なんてソースに書いたら問題あるのはわかるよね?
pの出力っていうのはそういう仕様、だから>>101ではputs使ってる。
106:デフォルトの名無しさん
08/11/29 16:38:53
なるほど。ありがとうございました。
107:デフォルトの名無しさん
08/11/29 19:18:03
自分のメソッド名を取得する方法ってないですかね?
具体的には
def hoge
p 自分のメソッド
end
hoge #=> "hoge"
というのが欲しいんですが
108:デフォルトの名無しさん
08/11/29 19:25:10
caller(0)をチェックしてみるとか
109:デフォルトの名無しさん
08/11/29 19:30:46
URLリンク(d.hatena.ne.jp)
class Object
def current_method
begin
raise StandardError
rescue StandardError => e
e.backtrace[1].scan(/`(.*)'/).to_s
end
end
end
ぐぐってみたらこんなので可能ではあるけど
標準ではできないかなぁ
110:デフォルトの名無しさん
08/11/29 20:26:14
自分自身の名前を知ることなく再帰呼び出しをしたいとかいう話なら
Yコンビネータでぐぐるとよろし。
111:デフォルトの名無しさん
08/11/29 21:45:32
RUBY_VERSION >= '1.8.7' だと
__method__というのが。
112:デフォルトの名無しさん
08/11/30 00:39:57
__METHOD__はRubuniusだっけ?
113:デフォルトの名無しさん
08/11/30 07:17:47
extractcontentを使っている人いませんか?
ブログから本文のみを抜き取りたいのですが・・・・。
gemで入れたんですけど、作者のブログにあるサンプルが実行できません。
URLリンク(labs.cybozu.co.jp)
エラーは
extract.rb:7: uninitialized constant ExtractContent::Extractor (NameError)
なんですけども。
114:デフォルトの名無しさん
08/11/30 11:42:01
Hashについて教えていただきたいのですが
rubyのHashはどのぐらいの容量を保持できるのでしょうか?
メモリが許す限りの容量を代入していけるのでしょうか?
環境:MacOSX10.4
ruby 1.8.7
よろしくお願いいたします。
115:デフォルトの名無しさん
08/11/30 15:46:52
>>113
サンプルコード動いたけど。
$ ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]
$ gem -v
1.2.0
$ gem list | grep extractcontent
extractcontent (0.0.1)
>>114
メモリが許す限りだけど、どのくらいメモリがあるかは感知しないので、
物理メモリを超えて使おうとすればスラッシングして涙目に。
116:デフォルトの名無しさん
08/11/30 19:34:07
>>113
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
$ gem --version
1.3.1
でも動作した。
エラーからして、ExtractContentは定義されてるけどExtractorまでは定義されてないってことになるが
妙だな。1ファイルに収まるライブラリなのに。
117:デフォルトの名無しさん
08/11/30 19:57:18
カレントディレクトリにextractcontent.rbってテストで作っててその中でモジュール定義してるとか
118:113
08/11/30 19:58:20
>>115>>116
自分も動きました。
一度間違ってrootでないアカウントでgemインストールしてしまい、
それを消して、再度rootで入れました。そのときに~/.gemができてそれ以下を読みに行こうとしてたっぽいです。
どこの設定に.gem以下を読みに行くかわからないのでユーザ作り直して、そこで実行するときちんと動作しました。
119:デフォルトの名無しさん
08/12/01 10:57:38
書籍「Ruby レシピブック第二版268の技」のP.289のスクリプトを動かしたんですが、
結果がちょっとおかしいです。
class Numeric
def round_n(nth)
num = self*(10**(-nth))
return num.round()*(10**nth)
end
end
num = 438.1728
p num.round_n(-3) #=> 438.173
結果は↓
Rational(438173, 1000)
何がいけないんでしょうか?よろしくお願いします。
120:デフォルトの名無しさん
08/12/01 11:14:40
>>119
何がどうおかしいと思うの?
121:119
08/12/01 11:26:11
>>120
本来"438.173"と表示されるはずが"Rational(438173, 1000)"と表示される辺りです。
Rational(438173, 1000)と表示されるのが正しいのでしょうか?
122:デフォルトの名無しさん
08/12/01 12:08:37
>>121
それは、実行前のどこか
(irbで前に実行したスクリプトか、あるいはrequireで読み込んだ野良ライブラリのどこか)で
require 'rational'
をしている
何もしてない状態ではFloatが返る
123:デフォルトの名無しさん
08/12/01 12:26:28
raise "message" と
raise XxxError.new("message") と
raise XxxError の
違いがわかりません。どう使い分けるべきでしょうか。
124:デフォルトの名無しさん
08/12/01 12:28:03
>>121
なるほどそう読むのか。
Rational で返ってくるということはどこかで Rarional を require してるんだよな?
そうすると、こんな具合↓に演算子が再定義されるとのこと。
URLリンク(doc.loveruby.net)
125:デフォルトの名無しさん
08/12/01 13:39:45
>>123
見たままそのまんまです
例外というシステムはユーザーに情報を伝えることだけが主目的じゃないわけで
ユーザーに情報を伝えるだけなら旧来の
「スクリプト○○行目の○○メソッドで引数○○がエラー起こしましたので終了します(・ε・)プップクプー」
と表示して即終了するだけでいいんだしさ
1行目は捕捉しても意味がないエラー(エラーが出たこと自体がまずいとき)
2行目は捕捉して回復処理を行えうる例外
3行目は捕捉可能でユーザーにも情報を与えたいとき
組み込みの例外のうちどんなものをどんなときに使うか、というのは特に定まってないので好きに悩め
引数が間違ってるからといって必ず組み込みの ArgumentError を使わなければならない
(オリジナル例外もこれを継承しなければならない)というわけではない
126:デフォルトの名無しさん
08/12/01 13:49:58
自分で例外クラス作るのは公開する気のあるモジュールだけだな
作ってる最中は全部 raise "message" になってる
中間的な一時的変数の名前考えるのめんどくさいという話に少し似ている
127:119
08/12/01 14:58:03
>>122,124
rubyを始めた頃にirbでやったみたいです。(単品で動かしてもRationalになるため)
戻し方が分からないので.to_fで対応しておきました。
ありがとうございました。
128:デフォルトの名無しさん
08/12/01 15:33:05
ここで出る例外をキャッチできればこっちでなんとかするのに、と思えるモジュールほどRuntimeErrorしか出さない
例外を使いこなすのははセンスが要るねえ
129:デフォルトの名無しさん
08/12/01 15:38:30
Matzが例外について熱く語ってる記事とかない?
C#の中の人だとこういうのがあるんだけど
URLリンク(www.artima.com)
130:デフォルトの名無しさん
08/12/01 16:23:28
最初の分厚い黄色い本に何か書いてあるかも
例外機構については適当に導入したんだと思う
131:デフォルトの名無しさん
08/12/01 16:54:01
アスキーから出てた奴だよね。チャンスがあれば読んでみる。ありがとう
132:デフォルトの名無しさん
08/12/01 19:08:35
>>123
raise "message"
-> raise RuntimeError, "message"
raise XxxError.new
-> raise XxxError
raise XxxError
-> raise XxxError
2番目は例外オブジェクトを渡す形式。
なんかどっかに取っておいてある例外を raise @ex みたいに挙げるとか。
例外を挙げる前にアクセサを呼んで情報をセットするときとか。
一番使われてるのは3番目じゃね?
raise XxxError, "message"
-> raise XxxError.new("message")
と同じ。
1番目の形式は3番目の形式の省略形と言えるけど、これに合わせて
rescueでも例外クラスを省略するとRuntimeError以下を捕捉する。
捕捉するな、ヤバいことになったぞ、ってときはExceptionとかRuntimeErrorよりスーパークラスな
もの挙げたほうがいいと思う。
133:デフォルトの名無しさん
08/12/01 21:50:27
>>125
>1行目は捕捉しても意味がないエラー(エラーが出たこと自体がまずいとき)
うそつけ。
raise "message" は単にエラークラスを省略しただけであり、「捕捉しても意味がない」なんてことはない。
>2行目は捕捉して回復処理を行えうる例外
>3行目は捕捉可能でユーザーにも情報を与えたいとき
逆だろ。
ユーザに情報を与えるなら raise XxxError じゃなくて raise XxxError.new("message") のほう。
初心者スレでこんなウソを垂れ流さんでくれ。初心者が間違って覚えてしまうだろうが。
それともなんかの工作員か?
134:デフォルトの名無しさん
08/12/01 21:59:28
>>132
>rescueでも例外クラスを省略するとRuntimeError以下を捕捉する。
ウソつけ。
rescue =< ex
で捕捉されるのはStandardErrorだ。
>捕捉するな、ヤバいことになったぞ、ってときはExceptionとかRuntimeErrorよりスーパークラスな
>もの挙げたほうがいいと思う。
ひどい日本語だな。「ExceptionやRuntimeErrorより...」と読み間違えてしまうじゃないか。
「捕捉するな、ヤバいことになったぞ、ってときは、Exceptionのような
StandardErrorよりスーパークラスなものをあげたほうがいいと思う。」
「捕捉するな、ヤバいことになったぞ、ってときは、StandardErrorより上位の例外クラスを使ったほうがいいと思う。」
自分の日本語力のなさを「2chだからどうこう」と言い訳すんなよ?
135:デフォルトの名無しさん
08/12/01 22:15:39
>>133-134が一体何にそんなに怒ってるのかが理解できない
136:デフォルトの名無しさん
08/12/01 22:55:54
Ruby使ってる人間であれば、普通に怒るべきところだと思う
137:132
08/12/02 01:54:41
>ウソつけ。
>rescue =< ex
>で捕捉されるのはStandardErrorだ。
フォローthx、ふつーに間違えた。
でもrescue => ex だと思う。肩の力抜けよ。
>ひどい日本語だな。「ExceptionやRuntimeErrorより...」と読み間違えてしまうじゃないか。
いいじゃん、Exceptionより上の例外クラスないし。
138:デフォルトの名無しさん
08/12/02 02:18:02
そもそも raise Exception とか書いたら
rescue Exception => ex とか書く奴が絶対出てくると思うんだが
139:デフォルトの名無しさん
08/12/02 02:27:28
けどライブラリのバグとかを教えるのにException挙げるぐらいしか手がないんだもんよん。
Rubyスクリプトからfatal触れないし。
JavaでError(だっけ?)系統の例外を捕捉するのがいい顔されないみたいに、やったら叱るしか
ないんじゃないのかなぁ…
irbみたいなのを書けるように、そう書けること自体は多分必要だし。
140:デフォルトの名無しさん
08/12/02 06:04:02
>>135
その人にとってRubyは神聖なものでRubyしか取り柄がないのですよ
だから普通の指摘ができない
141:デフォルトの名無しさん
08/12/02 11:16:08
2chだからといって出鱈目過ぎる奴はどうかと思うがな
142:デフォルトの名無しさん
08/12/02 11:22:58
>>140
間違ったことをしたり顔で書いてる人にいわれてもなあ・・・
143:デフォルトの名無しさん
08/12/02 11:24:47
>>139
>けどライブラリのバグとかを教えるのにException挙げるぐらいしか手がないんだもんよん。
どういう意味?
144:デフォルトの名無しさん
08/12/02 11:39:19
普通に指摘できないのは壊れてる証だとは思う
MLでも時々見る
記名でできるのはある意味凄いが真似したいとも思わん
145:デフォルトの名無しさん
08/12/02 15:54:47
>>143
Cではassertマクロを使うような場所というか…
case value
when :hoge
...
when :piyo
...
when :foo
...
else
#絶対に来ないはずの分岐
raise Exception, 'must not happen'
end
みたいな。るびまで読んで使い出した。
146:デフォルトの名無しさん
08/12/02 16:35:17
さいきんやっとREXML::Document関連の使い方をうっすら覚えた程度の初心者ですが、
get_elementsで要素ごとに引っ張り出すようにしたら
その数が20個くらいに膨れ上がりました。
その処理が終わるまでものすごく遅くなる(終了まで10秒程度)ですが、
何か高速に行なう方法とかないですか?
通常要素ね具体的には特定のタグ名ごとに特定の変数に入れる処理を一番高速にやるにはどのようにするのが一番いいでしょうか。
147:デフォルトの名無しさん
08/12/02 16:45:40
gem の Hpricot などの C で書かれた高速なパーサを利用してるライブラリを使う
REXML は「全部 Ruby で書かれてる! Ruby 最高!」という人が使うライブラリ
遅いなと思ったら(そしてプログラムのインストールが可能な環境なら)即っと乗り換えてよし
148:デフォルトの名無しさん
08/12/02 17:12:48
Speed Comparison libxml vs. rexml
in seconds libxml rexml
opening 0.003954 0.104750
attribute_add 0.001895 0.011114
subelems 0.000585 0.004729
xpath 0.013269 2.981499
149:デフォルトの名無しさん
08/12/02 20:11:30
>>147
無料のレンサバってインストールできるでしょうか?
150:デフォルトの名無しさん
08/12/02 20:22:07
最近のレンタルサーバってインストールするものなのか?
>>149
そのレンタルサーバサービスでrubygemsのユーザーインストール実績があればたぶん可能
まあ、つまり、無料レンタルサーバではきっと無理だろうな
俺はRubyスクリプトを外部使用するためだけにさくらインターネットの年5千円プラン使ってる
151:デフォルトの名無しさん
08/12/02 20:29:02
REXMLは遅くなってしまう処理はどう足掻いてもとことん遅い
Ruby以外の外部プログラムにぶん投げて結果を置換してevalしたほうが速いとかマジキチ
152:デフォルトの名無しさん
08/12/02 20:42:06
>>146
SAXライクなAPIがあったと思うので挑戦してみては
REXML SAX でぐぐったらそれなりに引っかかるようだ
153:デフォルトの名無しさん
08/12/02 22:21:20
evalの中で「evalをする」を記述することはできる?
eval(<<EOS)
def hello(person)
eval "Hello, #{person}!"
end
EOS
これはエラーになるよね
> NameError: undefined local variable or method `person' for main:Object
154:デフォルトの名無しさん
08/12/02 22:41:36
そこで2重にする意味が分からんけどこういうこと?
eval(<<EOS)
def hello(person)
"Hello, \#{person}!"
end
EOS
155:デフォルトの名無しさん
08/12/02 22:45:27
>>153
そもそも2重evalで何がやりたいのかを詳しく
そのサンプルコードでは、意図がよく分からない
156:デフォルトの名無しさん
08/12/02 23:03:12
それはさすがに見たままなんじゃね
def hello(person)
return eval("Hello, #{person}")
end
という。eval文の入ったメソッド定義そのものをeval文で書きたいのだろ
157:デフォルトの名無しさん
08/12/02 23:05:29
EOSは何もくくらないと、"EOS"と同じ扱いになる
つまり文字列全体をダブルクオートでくくったのと同じ状態になるので、展開が起きる
外側のevalに渡された文字列を評価する時点で#{person}が展開されちゃって、変なことになってる
展開を抑制するのが楽な回避法。'EOS'とすべし
helloメソッドは文字列を返したいのかもしれないけど、
それだと内側のevalにも括弧が足りない
eval <<'EOS'
def hello(person)
eval %q[ "Hello, #{person}!" ]
end
EOS
print hello("Ruby") # => Hello, Ruby!
158:デフォルトの名無しさん
08/12/02 23:08:58
それは展開されないと困るんじゃないかなあ
変数展開がないならメソッド定義をevalで書く必要なくね?
159:デフォルトの名無しさん
08/12/02 23:41:34
rubyでnet/sshを使おうとしてるのですが、標準入力の使い方がわかりません
それっぽいのがここしかないけど
URLリンク(webos-goodies.jp)
他にないですか?
やりたいのはsshで他サーバーに接続して、suでパスワードを入力し、
grep + パラメータを実行しその結果をブラウザに出力したいです
初めてrubyを使って無謀なことをしてる気もしますが、標準出力はどうにかなりましたが、
入力がどうもうまくいかず
net/sshのリファレンスページもみましたがいったいどこを探せばメソッド載ってるのかわからない
です
160:デフォルトの名無しさん
08/12/03 20:05:45
>>159
URLリンク(net-ssh.rubyforge.org)
URLリンク(rubyforge.org)
161:デフォルトの名無しさん
08/12/03 22:56:25
>>160
うおおありがとう!まさに求めていた物だ!
162:デフォルトの名無しさん
08/12/04 07:14:05
Rubyで書かれたblog用のCGIってないですか?
163:デフォルトの名無しさん
08/12/04 07:21:24
>>162
その質問には、熟慮の末に「ない」と答えるのが妥当な気がする
164:デフォルトの名無しさん
08/12/04 07:25:21
>>163
ということは、あるにはあるけど使えないとか、そんな感じですか?
165:デフォルトの名無しさん
08/12/04 07:25:57
「ぶろぐようのしーじーあいありますか?」という質問に応えられるレベルのものはないな
素直にPHPかPerlの使っとけ
166:デフォルトの名無しさん
08/12/04 08:37:00
>>165
一応名前だけでも教えてください。
167:デフォルトの名無しさん
08/12/04 09:48:40
>>162
tDiary、Pinky:blog、lily
もしかして普通に名前挙げた俺、空気読めてない?
168:デフォルトの名無しさん
08/12/04 10:00:59
「ぶろぐようのCGI」というものを求めてる人には結構アレなシロモノだと思う
Rubyをやりたいんじゃなくてブログシステムが欲しいんだろうし
169:デフォルトの名無しさん
08/12/04 10:16:04
tDiaryより設置しやすく使いやすい軽快なものを作ろうとしてるのかもしれないじゃないか
日本における Perl の隆盛は Perl でカウンタと掲示板が作られたことだからな
「なんかごっつい Rails だけじゃない Ruby」を推進するなら今しかない
170:デフォルトの名無しさん
08/12/04 10:52:08
>>158
はい。
['hello', 'goodbye'].each do |greeting|
eval(EOS)
def #{greeting}(person)
eval "#{greeting.capitalize}, #{person}!"
end
EOS
end
実際はこんな感じです。展開抑制されると思わなかったので…
171:デフォルトの名無しさん
08/12/04 18:56:49
2重にしてでもevalを使いたいのは、リフレクションで
トップレベルにメソッドを定義するため?
172:デフォルトの名無しさん
08/12/04 21:28:23
>>170
ふつーはこう書く
['hello', 'goodbye'].each do |greeting|
eval(<<-EOS)
def #{greeting}(person)
'#{greeting.capitalize} %s!'%person
end
EOS
end
173:デフォルトの名無しさん
08/12/05 12:24:58
採点用プログラムを書いてるんですが、得点ごとの振り分けでちゃんと動きません。
【ちゃんと動くプログラム】
if 90<=tokuten ; foo[9] += 1 ; end
if 80<=tokuten && tokuten<90 ; foo[8] += 1 ; end
if 70<=tokuten && tokuten<80 ; foo[7] += 1 ; end
if 60<=tokuten && tokuten<70 ; foo[6] += 1 ; end
if 50<=tokuten && tokuten<60 ; foo[5] += 1 ; end
if 40<=tokuten && tokuten<50 ; foo[4] += 1 ; end
if 30<=tokuten && tokuten<40 ; foo[3] += 1 ; end
if 20<=tokuten && tokuten<30 ; foo[2] += 1 ; end
if 10<=tokuten && tokuten<20 ; foo[1] += 1 ; end
if 0<=tokuten && tokuten<10 ; foo[0] += 1 ; end
【上記では長いのでイテレータで短くしたプログラム(正しく動かない)】
(1..8).each do |i|
if (90<=tokuten && tokuten<=100) ; foo[9] += 1 ; end
if (i*10)<=tokuten && tokuten<(i+1)*10 ; foo[i] += 1 ; end
if 0<=tokuten && tokuten<10 ; foo[0] += 1 ; end
end
配列はちゃんと0で初期化してあります。
短くしたプログラムはfoo[9]以外はちゃんと動いてるみたいです。
foo[9]だけが明らかにおかしい人数になるので不思議です・・・
なんとなくかっこで囲んでみたけどダメでした。もちろん上記と同じように「90<=tokuten」も試しましたがダメでした。
助言お願いします。
174:デフォルトの名無しさん
08/12/05 12:42:43
foo[9] += 1の行とfoo[0] += 1の行が8回も実行されてるからイテレータの外に出す
それか1..8を0..9にして、10点未満も90点以上もiの一般式に組み込むかのどっちか
175:デフォルトの名無しさん
08/12/05 12:44:23
うおー、初心者スレっぽいぞ
頭が痛くならない解決法のひとつは、case文を使うこと
case tokuten
when 90..100 then foo[9] += 1
when 80..89 then foo[8] += 1
when 70..79 then foo[7] += 1
# 中略
when 10..19 then foo[1] += 1
when 0..9 then foo[0] += 1
end
もうひとつは、得点とカウンターの関係を冷静に見て条件を抽出すること。
「得点の 1 の位に等しい配列要素を +1 する」
「ただし、100 点の場合は 9 要素目を +1 する」
「なお、9 を 10で割ると 9 /10 = 0 である」
if tokuten == 100 then
foo[9] += 1
else
n = tokuten / 10
foo[n] +=1
end
176:デフォルトの名無しさん
08/12/05 12:55:13
>>175
>うおー、初心者スレっぽいぞ
たしかにな
>「得点の 1 の位に等しい配列要素を +1 する」
10の位の間違いか?
>「ただし、100 点の場合は 9 要素目を +1 する」
これはひっかかりそうだなー
コードはもうちょっと簡潔になるな。
n = tokuten == 100 ? 9 : tokuten / 10
foo[n] += 1
または
if tokuten == 100
n = 9
else
n = tokuten / 10 # ex. 85 -> 8, 31 -> 3
end
foo[n] += 1
177:デフォルトの名無しさん
08/12/05 13:27:46
>「ただし、100 点の場合は 9 要素目を +1 する」
こういう条件にするとそう処理する理由がそれほど明らかでない。
条件は上界により与えられるとして考える方がよくないか。
いつぞやRubyスレで話題になった Range#bound があれば
idx = (0..9).bound(tokuten / 10)
foo[idx] += 1
178:デフォルトの名無しさん
08/12/05 13:38:10
まあ落ち着いてスレタイ100回読め
179:デフォルトの名無しさん
08/12/05 13:40:50
ンなこと言ったらデータとしては foo[10] を作るのが自然
100 点に関しては集計なり統計なりするときの処理に扱いを委ねるべきで、
データの時点で組み込んでしまうべきではない
180:デフォルトの名無しさん
08/12/05 13:55:20
>>173
>>174 も書いてるがその「正しくないコード」の意味するところは、
i を 1 から 8 に変更しつつ do 〜 end の中のコードを実行するという事だ。
foo[9] 以外は動いているって言ってるけど foo[0] にも同じ問題がある。
「do 〜 end 中の文は tokuten の値が何であろうと 8回実行されてる」
という事を頭に入れてもう一度コードをよくみて考えてみて。
多分上手く動いていると思っている部分も、あまりよくないと気付くだろう。
181:デフォルトの名無しさん
08/12/05 13:58:12
eachは「振り分け」じゃないからな
時々混乱したことはあった
182:173
08/12/05 14:17:41
>>174,180
その通りですね。脳内で考えたときは一度条件に当てはまったら勝手にeach文から抜けてました・・・
>>175
case文だと元のfor文と対して長さが変わらないですねw
もう一つの案、とても参考になりました。ありがとうございます。
>>176
条件演算子、思いもつかなかった方法です。
短くて使いやすそうです。ありがとうございます。
>>177
む・・難しい・・・
コピペしても動かなかったので何か読み込ませるものなんですね。
レスくれたみなさま、ありがとうございました。
得点を割ってそのままインデックスとして使う方法は私にとっては斬新で勉強になりました。
重ね重ね、ありがとうございました。
183:デフォルトの名無しさん
08/12/05 18:26:56
>>173
なあ、初心者にちょっと聞いてみたいんだけど、条件演算子って難しい?
n = tokuten == 100 ? 9 : tokuten / 10
とか理解できる?
世の中には条件演算子を禁止するようなプロジェクトがあって、頭おかしいと思ってるんだけど、
初心者にとっては条件演算子がほんとうに難しいのかどうか気になる。
184:デフォルトの名無しさん
08/12/05 18:30:16
条件演算子が禁止されるのは、難しいからと言うよりも
乱用されてソースコードが酷いことになるのを防ぐためじゃない?
185:rubyの初心者
08/12/05 18:34:24
n = 9 if tokuten == 100 else tokuten / 10 のほうがわかりやすい。
186:デフォルトの名無しさん
08/12/05 18:44:57
>>185
おまえ、rubyの初心者じゃなくてPython上級者だろ。
187:デフォルトの名無しさん
08/12/05 18:50:36
条件演算子の禁止は「難しいから」じゃない
難しいという理由からなら、こんなに一般的に禁止が広まるわけがない
188:デフォルトの名無しさん
08/12/05 18:55:02
rubyには?で終わる述語が覆いから
sym = n.zero? ? :hoge : :fuga
とかやられるとわけがわからない。
sym = if n.zero? then :hoge else :fuga end
ほらわかりやすい。
189:デフォルトの名無しさん
08/12/05 18:56:29
ネストすると読みづらいからじゃないかな
190:デフォルトの名無しさん
08/12/05 18:57:55
三項演算子(条件演算子、注釈逆か)は、下手に許可すると
変なとこで改行してカッコつけてネストする奴が出てくるのが嫌われてる理由の一つだと思う
そんなに複雑なら if 文で書くかリファクタリングしろ
191:デフォルトの名無しさん
08/12/05 19:02:21
記号が小さくて読み落とししやすいんだよな
もっと2〜3文字のキーワードで区分けされていると読み落としがないんだが
192:デフォルトの名無しさん
08/12/05 19:05:21
Ruby は if 文が値を返すから、三項演算子の必要性は他の言語よりも薄いと思う
193:デフォルトの名無しさん
08/12/05 19:18:32
書く分には良いんだが、読みにくい印象が強いな <<三項演算子
194:デフォルトの名無しさん
08/12/05 19:28:41
>>188
>sym = n.zero? ? :hoge : :fuga
>とかやられるとわけがわからない。
そうか、初心者はこの程度でもわけがわからなくなるのか。
>sym = if n.zero? then :hoge else :fuga end
>ほらわかりやすい。
どこがだよ。
195:デフォルトの名無しさん
08/12/05 19:45:21
>>193
条件演算子で短くまとめた条件分岐はほぼ100パーセントの確率で
のちのち長い if 文に書き換える羽目になるというのがどうにも
嫌われる人はここで条件演算子使用を強行する
196:デフォルトの名無しさん
08/12/05 20:00:26
最初から then 書くのがけっこう普通になるよね
197:デフォルトの名無しさん
08/12/05 20:22:43
1行で書けて式の値を使うときだけ三項演算子
ifの返す値を使うプログラムは読みにくい
198:デフォルトの名無しさん
08/12/05 21:21:19
配列の添え字アクセスを send で行うことはできますか?
[1, 2, 3].send("[](1)") が 2 を返すような
199:デフォルトの名無しさん
08/12/05 21:23:20
[1,2,3].send('[]', 1)
200:173
08/12/05 21:26:57
>>183
条件演算子が難しいなんて書いてませんよ・・・私・・・
n = tokuten == 100 ? 9 : tokuten / 10
「tokuten」が100ならば「9」を「n」に代入、elseなら「tokuten/10」を「n」に代入ですよね
201:デフォルトの名無しさん
08/12/05 21:32:06
>>199
うおー引数2個ーめんどー
ありがとうございます
202:デフォルトの名無しさん
08/12/05 22:12:43
>>200
アー、悪い、
>条件演算子、思いもつかなかった方法です。
って書いてあるから、初心者には理解するのが難しいのかと思った。
わかってるならすまんかった。気を悪くせんでくれ。
203:デフォルトの名無しさん
08/12/06 01:23:58
RubyってJavascriptの代わりになりますか?
204:デフォルトの名無しさん
08/12/06 01:29:54
なりません。
205:デフォルトの名無しさん
08/12/06 01:40:02
すんません、
メソッド呼び出しているだけの行で
[BUG] Segmentation faultってバグ落ちしたメッセージが表示されるですけど、
これってどこでバグっているのか原因わかりますか?
後、ルビーのバグ回避のプログラミングの仕方ってあるでしょうか?
ルビーの落とし穴というページ見ても今一バグが発生する原因や回避の方法が分からないもので。
206:デフォルトの名無しさん
08/12/06 01:42:36
追記です。
ルビーのバージョンは1.8.6で無料サーバでつかうため、パッチやバージョンアップ以外の方法でバグ回避方法をおしえてください。
207:デフォルトの名無しさん
08/12/06 01:44:16
実際のスクリプトの部分を見せることができないのは村の掟とかそういうのなんですよね
208:デフォルトの名無しさん
08/12/06 01:44:39
>>205
ruby本体のbugだから、まずは最新版で試してみて。
それでも再発するなら、出来る限り余分な部分を削った再現コードを作って
ここか本スレかruby-listに晒せばおk。そのときruby -vの提示を忘れずに。
あとは偉い人がよろしくやってくれるはず。
209:デフォルトの名無しさん
08/12/06 01:47:13
>>206
・・・まあ再現コード見せて。
そのコードを作ること自体が「回避の方法」だったりするし。
210:デフォルトの名無しさん
08/12/06 01:58:16
コードは晒せないですが、
openでファイル作成やREXML::Documentとグローバル配列とメソッドだけでね。
今やったらなぜメソッド中の注釈「# DATAURL 」の行を指して
[BUG] Segmentation fault
ruby 1.8.6 (2008-08-11) [i386-mswin32]
って出ました。わけわからん。
211:デフォルトの名無しさん
08/12/06 02:00:28
無料サーバであいさんはちろくえむえすうぃんさんじゅうに?
212:デフォルトの名無しさん
08/12/06 02:05:23
>>211
RDEでデバッグしながらですがけど...
鯖だとデバッグできないですから..
213:デフォルトの名無しさん
08/12/06 02:18:57
>>210
再現コードがないと、なんともコメントできない。
214:デフォルトの名無しさん
08/12/06 02:19:25
うむ
215:デフォルトの名無しさん
08/12/06 02:19:34
村の掟ワロタ
216:デフォルトの名無しさん
08/12/06 02:52:30
コード晒せないのなら諦めろ、あるいは自力で解決しろ
Segmentation faultだけでは、アドバイスする側にもわけわからん
217:デフォルトの名無しさん
08/12/06 02:53:36
gdb coreして、whereだ。
何かが分かる気はしないけどね。
218:デフォルトの名無しさん
08/12/06 08:57:37
未知か既知かわからないRuby本体のバグを誰かがわからないけどどっかで踏んでる、ということだな
それ以上のことはなんもならん
219:デフォルトの名無しさん
08/12/06 10:53:07
セグフォはRubyのバグだから投稿すれば本来治してくれるんだけど
再現コード無いのは無理だなあ
220:デフォルトの名無しさん
08/12/06 14:02:12
リファレンスマニュアルの終了処理に、「exit(3) で終了」って書いてあるけど、なぜ 3 なんですか?ただの例?
221:デフォルトの名無しさん
08/12/06 14:11:45
>>220
0は成功、1かそれ以上は失敗
ということで、ただの例ですな
222:デフォルトの名無しさん
08/12/06 14:18:02
>>220
exit(3)の3はmanのセクション番号でライブラリコールだってこと。
詳しくはman man
他にもwrite(2)とかがある
223:デフォルトの名無しさん
08/12/06 14:19:29
>221
多分それ違う
>220
exit(3) のリンク先を見れば判ると思うけど、この exit はC言語の関数の exit() のこと。
要はRubyが内部でやってる処理を説明している。
Linuxのマニュアルのセクション3にあるexit()の通りの処理をしてるよ、という意味。
224:デフォルトの名無しさん
08/12/06 15:51:10
マニュアルにある exit(3) の (3) は引数を表してるわけじゃないんですね。
>>221-223
ありがとうございました。
225:デフォルトの名無しさん
08/12/06 16:25:24
>>204
なんでだよ
Rubyってなんでもできる万能言語って聞いたんだが
226:デフォルトの名無しさん
08/12/06 16:30:20
>>225
ではその人を責めてください
サンタクロースが実在しなかったからといってサンタ役のお父さんをバシバシ叩くのはやめてください
227:デフォルトの名無しさん
08/12/06 22:22:34
>>225-226
ワロタw
228:デフォルトの名無しさん
08/12/06 23:51:21
エクセルをRubyで動かしたいんだけど、OLEが分からないからエクセルのマクロスクリプトを
Rubyのプログラム上からエクセルに渡して動かす、みたいなことはできますか?
229:デフォルトの名無しさん
08/12/07 00:35:40
エクセルオブジェクトにそういう機能があれば、
呼び出す側の言語が何であろうと出来るんじゃない?
230:デフォルトの名無しさん
08/12/07 00:37:45
てかエクセルオブジェクトを使うにはOLEの知識がいるじゃないか。
231:デフォルトの名無しさん
08/12/07 06:28:28
メソッドの勉強してるんですが
puts とか getsがメソッドですよといわれたのは良いんですが
self.puts
とか、
100.to__s
とかはわかるのですが
gets.chompはなぜgetsの後ろにchompが付くんですか?
メソッドの前に付くのが普通だと思ってたので・・・
232:デフォルトの名無しさん
08/12/07 07:14:23
>231
self.gets.chomp
getsの結果に対してchompするということ
つーかgetsはレシーバ書かないほうが普通だと思うが…
233:デフォルトの名無しさん
08/12/07 07:36:31
>>232
ありがとうございます
selfは書かないんですけど
rubyの練習に読んでる
URLリンク(www1.tf.chiba-u.jp)
でselfが出てきたので聞いてみました。
234:デフォルトの名無しさん
08/12/07 07:50:48
そこ「説明の切り捨て方」がイマイチだな
メソッドチェーンという概念がある(あくまで概念で、文法のようなものではない)
あるメソッドの返り値のオブジェクトのクラスのメソッドを
返り値を返すメソッド.返り値のクラスのメソッド
で動作させるものだ
関数的メソッドgetsの返り値は文字列であるStringクラスのオブジェクト(=インスタンス)だから、
Stringクラスのメソッドであるchompをメソッドチェーンで記述できる
あくまでメソッドの返り値(またはオブジェクトそのもの)のクラスが重要
返り値のクラスは常に意識しておくといい
235:デフォルトの名無しさん
08/12/07 08:31:30
>>231
>gets.chompはなぜgetsの後ろにchompが付くんですか?
s = gets
s.chomp
を一行でかいたら
gets.chomp
になった、というだけのこと。
236:デフォルトの名無しさん
08/12/07 08:38:01
>>234
難しい・・・(>_<)
>>235
なるほど
237:デフォルトの名無しさん
08/12/07 08:53:23
Rubyはかなり豪快なメソッドチェーンが出来るのが魅力だよな
何だかんだでチェーンが切れるOOPLは多い気がする
238:デフォルトの名無しさん
08/12/07 09:01:12
end の後ろにメソッドが平気で繋がるのはやりすぎだとも思える
が、ブロックとして {} を使うことにすると、クラスとメソッド用途によっては異常に便利
self や目的のオブジェクトが意図的に返るように作られてるブロックつきメソッドが多いのが効いてるな
def …
ナントカ
カントカ
yield s if s
s
end
という定義が多い
239:205
08/12/07 17:03:10
すいません、あれから色々と調べて最初配列の作りすぎてメモリ使用しすぎて落ちているのかと思ったのですが、それともちがったようです。
それで現在も分からないですが、エラーメッセージの一番大事な所を表示し忘れました。
これで何が原因かおおよそわかりますか?
C:/Ruby/lib/ruby/1.8/rexml/text.rb:312: [BUG] Segmentation fault
ruby 1.8.6 (2008-08-11) [i386-mswin32]
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Complete(3)
最初自分の命令の312行かと思い込んで読んでいたのですが、よくみるとREXMLの中の312行で死亡したぽいですが。
240:デフォルトの名無しさん
08/12/07 17:28:44
>>239
>>213-219
だれも「詳細なエラー文を」とは言ってないんだ。
241:205
08/12/07 18:03:35
それでは質問を変えます。
C:/Ruby/lib/ruby/1.8/rexml/text.rb:312
このエラーメッセージが意味するのは私のかいたプログラムの312行でエラー発生したのではなくて、
ルビー側が用意している
C:/Ruby/lib/ruby/1.8/rexml/text.rb
の312行目でエラーが発生したと解釈して間違いないですよね?
242:デフォルトの名無しさん
08/12/07 18:38:00
>241
それも完全な間違いでは無いが、限りなく間違いに近い。
本来Ruby側はどんな間違ったコードでも
「Rubyの」エラーを出して、コードとしては異常な終了でありながら
Rubyとしては正常に終了しなければならない。
ところが今回RubyはSegmentationFault…つまりRuby自体が異常な終了をしている。
だからRuby制作側としてはRubyを修正すべきなんだが
そのためにはSegmentationFaultが起こる状態を再現しないと
根本的な修正が難しい。
だから、その同じ状態を再現するコードがあったほうが良いのだよ。
…で、ライブラリ由来だとしてもライブラリをどう使うと起こるのか判らない。
SegmentationFaultである限り、貴方に責任はほぼ無いが
修正するには再現コードがないとキツいだろうなあという話。
243:デフォルトの名無しさん
08/12/07 18:42:43
ああ、C製の外部ライブラリなんかもセグフォで落ちるか?
どちらにしろセグフォ起こす時点で
貴方自身では勘ぐらいしか対抗手段は無いよ。
で、実際のコードも再現コードも出せないなら
作者も多分修正不能で「原因不明のバグ」としか言えない。
244:デフォルトの名無しさん
08/12/07 18:44:40
「[BUG]」を吐いて落ちてるような場合は、インタプリタが具体的に
「ここの行が悪いんでエラーにしますよ」と言ってるわけじゃないから、
その「C:/Ruby/lib/ruby/1.8/rexml/text.rb:312:」はたいした情報にならない。
問題を起こすプログラムから、そこを削っても問題が同じように起こる場所は
全部削っていって、問題を起こす最小のセットを作るしか、Rubyを作ってる
側としても対処のしようがない(普通は)。
(たまに、実は把握済みの問題で「このパッチだよ」というのが出てくることも
あるがそれは宝くじのようなものなので)
245:デフォルトの名無しさん
08/12/07 18:45:26
>>241
情報が少なすぎて判断出来ないし、ここでやる内容とも思えない
問題のソースとエラーメッセージの全てを出して作者に聞け
246:デフォルトの名無しさん
08/12/07 18:45:35
最新版が使えるなら最新版にしたら直ってるかも知れない。
最新版が使えないなら原因がネット上に落ちてるかも知れない。
…で、ネット上探すのは再現コードを見れないと厳しい。
247:デフォルトの名無しさん
08/12/07 20:10:06
>>239
とりあえずコードが公開可能なものならどこかのアップローダーに公開すれば
いいわけで…。公開不可能ならMatzにそのソースを送りつければいいや。
ちなみに現在の最新安定版は1.8.7-p72だからそれを導入してみて
もう一度やってみれば?もしそれでもSegmentation Faultが出るなら
もう一度ここに来て。
Rubyの公式サイト
URLリンク(www.ruby-lang.org)
248:デフォルトの名無しさん
08/12/07 20:53:45
>>242
おまえはキモイな。rubyなんかやるよりも死んだ方がいいんじゃないか?どうせ友達なんかいないんだろw
249:デフォルトの名無しさん
08/12/07 20:58:18
ルビー使い自称ルビリスト(笑)なんて所詮は囚人程度の脳味噌しかないからあまり関わんないほうがいい
250:デフォルトの名無しさん
08/12/07 21:14:00
>>248
ロジックで敗れたのでヒステリーで対抗ですね、わかります。
251:デフォルトの名無しさん
08/12/07 21:20:15
>>249
そのようだなw
252:デフォルトの名無しさん
08/12/07 21:49:47
>>248
そんなカキコミしてる暇あったら、再現コードを用意しようぜ。
SegmentationFaultのバグは、再現コードがないとエスパーしようがない。
253:デフォルトの名無しさん
08/12/07 22:03:56
おまえらけんかすんなよ
254:デフォルトの名無しさん
08/12/07 23:37:37
1.8.5ででかいのをREXMLに食わせたらSEGVったって話が
結構前にruby-devにあったような。
255:デフォルトの名無しさん
08/12/08 03:09:02
度々すいません。
open命令でXMLファイルをサイト経由で取得した場合、
result = open(a2)
resultには#<File:0x2c07f2c>という内容しか入っていないようなのですが、
帰ってきたサイトのHTMLデータといいますか、そのようなものを見るにはどうしたらいいのでしょうか。
色々とテストしてみたら、どうも帰ってくるXMLデータが相手サーバの都合か何かで変な状態で返されものを
REXML::Document.newで開くとコケるみたいです。
どんなファイルのときにこけているか分かれば対策の打てるような気もします。
256:デフォルトの名無しさん
08/12/08 03:20:24
テンプレ。
>質問には以下を書くこと。へたくそな質問は再提出を要求される。
> ・エラーメッセージ(自力で訳さずなるべくそのままで)
エスパーしてみると、エラーを突っ返されても構わずREXML::Document.newに渡しているせいで
XMLとしては当然解釈できずパースエラーとか。
257:デフォルトの名無しさん
08/12/08 03:32:51
>>255
>result = open(a2)
a2 が何かしらんけど、open() が返すのはFileオブジェクトじゃないかな。
だから
result = open(a2) {|file| file.read }
とか
file = open(a2)
result = file.read()
file.close()
とかすればいいんじゃないかな。
258:デフォルトの名無しさん
08/12/08 06:22:33
>>257
そんなどのマニュアルにもどんな解説にも書いてあるようなことで>>255さんが詰まるはずないだろ馬鹿か?
[BUG] って書いてあるんだからこっちに落ち度はなくてRubyが一方的に悪いに決まってるだろ
259:デフォルトの名無しさん
08/12/08 06:35:54
そんな煽りいらないお
260:デフォルトの名無しさん
08/12/08 06:56:35
俺らは質問やその後の遣り取りから質問者の知識を当て推量して回答したりしなかったりするわけだが、
>>258と言いたくなるのは今回は仕方があるまい
openを一度でも自分で使ったことがあるならわかることだからな
書き込みの際に省略してるだけだと思うしかないわ
261:デフォルトの名無しさん
08/12/08 08:46:03
> open命令でXMLファイルをサイト経由で取得した場合、
openつーか、require 'open-uri'した上でのopenだよな?
262:デフォルトの名無しさん
08/12/08 08:58:18
>>260
君はキモイからもうこのスレに来なくていい
263:デフォルトの名無しさん
08/12/08 09:46:33
>>262
お前キモいな
264:デフォルトの名無しさん
08/12/08 10:03:51
262はもうこのスレに来られなくなりました。
265:デフォルトの名無しさん
08/12/08 10:21:05
この刃はさすがに鋭いぬ
ひとりでスレ参加仕切るのはキモいわな
266:デフォルトの名無しさん
08/12/08 10:55:44
>>255
用語がちょい怪しいからHTTPについてあんま知らんのかも知れんけど、
open-uriで返ってきたオブジェクトに返してはFileとかの他にOpenURI::Metaについても
調べてみてくれ。
向こうのサーバがOKなレスポンスを返したかとかの調べ方がわからんのだったらまさにそれ。
267:デフォルトの名無しさん
08/12/08 11:35:17
中身を見るには require 'pp' して pp で見るといいお
268:デフォルトの名無しさん
08/12/08 11:40:13
(pretty_)inspectでフォローされてるとは限らないけどな
269:デフォルトの名無しさん
08/12/08 11:50:24
pretty_inspectの書式のめんどくささは異常
270:デフォルトの名無しさん
08/12/08 14:33:22
このプログラムでなぜかこけるのですが、原因って分かりますか?
#!/usr/local/bin/ruby -Ks
# REXML宣言 XMLデータを処理するための
require 'rexml/document'
require 'open-uri'
require 'uri'
result = open("スレリンク(tech板)l50")
# xmlデータ化してこの場合変数docに入れる。変数名は何でも可。
toto = result.read
doc = REXML::Document.new(result)
エラーメッセージ
------------------------------
C:/Ruby/lib/ruby/1.8/rexml/source.rb:149:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
from C:/Ruby/lib/ruby/1.8/rexml/source.rb:16:in `new'
from C:/Ruby/lib/ruby/1.8/rexml/source.rb:16:in `create_from'
from C:/Ruby/lib/ruby/1.8/rexml/parsers/baseparser.rb:133:in `stream='
from C:/Ruby/lib/ruby/1.8/rexml/parsers/baseparser.rb:110:in `initialize'
from C:/Ruby/lib/ruby/1.8/rexml/parsers/treeparser.rb:9:in `new'
from C:/Ruby/lib/ruby/1.8/rexml/parsers/treeparser.rb:9:in `initialize'
from C:/Ruby/lib/ruby/1.8/rexml/document.rb:205:in `new'
from C:/Ruby/lib/ruby/1.8/rexml/document.rb:205:in `build'
from C:/Ruby/lib/ruby/1.8/rexml/document.rb:42:in `initialize'
from C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/rbC.tmp:15:in `new'
from C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/rbC.tmp:15
Complete(1)
------------------------------
どうもresult.readした後REXML::Document.newするとエラーするぽいですけど。
271:デフォルトの名無しさん
08/12/08 14:55:36
訂正します
#!/usr/local/bin/ruby -Ks
require 'rexml/document'
require 'open-uri'
require 'uri'
result = open("URLリンク(10plate.blog44.fc2.com)")
toto = result.read
doc = REXML::Document.new(result)
272:デフォルトの名無しさん
08/12/08 15:09:22
そりゃ読み終わってりゃ中身は空だからなあ。当然だろう
273:デフォルトの名無しさん
08/12/08 15:16:28
引数はXML文字列でもいいのに…
てかREXMLでパースしたなら元のファイル別にいらないじゃんね
274:デフォルトの名無しさん
08/12/08 15:56:10
Rubyでエクセルのグラフを描きたいんですが、エラーでうまくいきません。
OLE詳しい人Help!
require 'win32ole'
module Excel
end
excel = WIN32OLE.new('Excel.Application')
excel.visible = false
excel.displayAlerts = false
file = "適当なフォルダパス"
book1 = excel.Workbooks.open(file)
sheet1 = book1.sheets(1)
sheet1.Range('A8').Select
chart1 = excel.Charts.Add()
chart1.Type=ExcelConst::XlLine
chart1.ChartType=ExcelConst::XlLineMarkers
chart1.SetSourceData Source=sh7.Range("B96:C106")
#続く
275:デフォルトの名無しさん
08/12/08 15:57:08
#続き
#chart specifications
chart1.PlotBy=ExcelConst::XlColumns
chart1.Location Where=ExcelConst::XlLocationAsNewsheet
chart1.HasTitle ="True"
chart1.ChartTitle.Characters.Text = "hoge"
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).HasTitle = "True"
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "fuga"
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).HasTitle = "True"
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "hogehoge"
book1.save
excel.quit
#コード終了 エラーメッセージが続きます
276:デフォルトの名無しさん
08/12/08 15:57:40
C:/ruby/mysrc/rb3C.tmp:112: syntax error, unexpected tCONSTANT, expecting kEND
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).HasTitle = "True"
^
C:/ruby/mysrc/rb3C.tmp:113: Invalid char `\223' in expression
C:/ruby/mysrc/rb3C.tmp:113: Invalid char `\276' in expression
C:/ruby/mysrc/rb3C.tmp:113: Invalid char `\223' in expression
C:/ruby/mysrc/rb3C.tmp:113: syntax error, unexpected tIDENTIFIER, expecting kEND
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "fuga"
^
C:/ruby/mysrc/rb3C.tmp:114: syntax error, unexpected tCONSTANT, expecting kEND
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).HasTitle = "True"
^
C:/ruby/mysrc/rb3C.tmp:115: Invalid char `\220' in expression
C:/ruby/mysrc/rb3C.tmp:115: syntax error, unexpected tIDENTIFIER, expecting kEND
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "hogehoge"
^
C:/ruby/mysrc/rb3C.tmp:115: Invalid char `\220' in expression
C:/ruby/mysrc/rb3C.tmp:115: Invalid char `\224' in expression
C:/ruby/mysrc/rb3C.tmp:115: unterminated string meets end of file
C:/ruby/mysrc/rb3C.tmp:115: syntax error, unexpected $end, expecting kEND
Complete(1)
以上です。よろしくお願いします。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4283日前に更新/244 KB
担当:undef