Ruby 初心者スレッド Part 40
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/11(土) 15:46:15★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0237デフォルトの名無しさん
2010/12/20(月) 10:30:33あ、そうなんだ
無知でスマソ
0238デフォルトの名無しさん
2010/12/20(月) 10:32:550239デフォルトの名無しさん
2010/12/20(月) 10:41:211.9 系列の開発版は常に1.9.0を名乗り、バージョンが「上がる」ことはない
1.9 系列の安定版は 1.9.1、1.9.2、1.9.3、… 1.9.10、1.9.11、…を名乗る
1.8 系列の開発版は…あるんだっけ? まあいいや、1.8.7 の次の安定版は、あるとしたら 1.8.8 だ
2.0 が安易に出ることはしばらくない
1.9 の安定版でもう何も足すことも引くこともないというような安定っぷりになったら、
それがそのまま2.0にスライドすると予測されてる
0240デフォルトの名無しさん
2010/12/20(月) 11:00:00・ それはRubyの書き方のミスです
・ それはRubyの使い方がまずいです
・ それはgemライブラリ側の不具合です
・ それはgemライブラリが1.9.1に対応してないからです
・ それはあなたの文字エンコーディングの扱い方のミスです
が渾然一体となってジェットストリームアタックかけてくるからだな
1.8.7でRubyに慣れてからだと
> それはRubyの書き方のミスです
> それはRubyの使い方がまずいです
が激減して
> それはgemライブラリが1.9.1に対応してないからです
の自力バイパスが可能で
> それはgemライブラリ側の不具合です
を自力修復可能(なことがある)なので、残りの
> それはあなたの文字エンコーディングの扱い方のミスです
とせいぜい
・ それは1.9.1/1.9.2の新機能です
くらいで悩む程度になって気楽
0241デフォルトの名無しさん
2010/12/20(月) 11:08:040242デフォルトの名無しさん
2010/12/20(月) 11:12:31わりとピキッと来ることが多いはずなんだけど
0243デフォルトの名無しさん
2010/12/20(月) 11:18:24例えばどんなgemか3つ4つ挙げてみてよ
0244デフォルトの名無しさん
2010/12/20(月) 12:02:01文字エンコーディングが変なのは時々ひっかかるけど
0245デフォルトの名無しさん
2010/12/20(月) 12:20:320246デフォルトの名無しさん
2010/12/20(月) 12:26:330247デフォルトの名無しさん
2010/12/20(月) 12:32:00# -*- encoding: UTF-8 -*-
require 'rubygems'
require 'active_support'
require 'date'
p Date::today
p Date::today.last_month
このスクリプトで,test.rb:10: undefined method `last_month' for #<Date: 4911101/2,0,2299161> (NoMethodError)
のエラーが出てしまいます。
対処法知ってますか?
環境は,intel iMac 10.6.5
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
ruby 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]のppc miniでは問題なかったのですが。
0248デフォルトの名無しさん
2010/12/20(月) 13:24:57last_monthのかわりにprev_monthを使用すべし。
0249デフォルトの名無しさん
2010/12/20(月) 14:11:42rubyのバージョンの数字が2桁にならない保証ってもう過去の話?
0250デフォルトの名無しさん
2010/12/20(月) 17:39:07amazon-ecs(+Hprocit)で >>240 みたいな目にあった
0251デフォルトの名無しさん
2010/12/20(月) 20:03:32def << name, price
puts "#{name}=#{price}"
end
end
foo = Foo.new
foo << "smile", 100
エラーが出ます。なぜですか?
./main.rb:10: syntax error, unexpected ',', expecting $end
0252デフォルトの名無しさん
2010/12/20(月) 20:20:37foo << ["smile", 100]
foo.<< "smile", 100
という書き方をするメソッド定義はわかるのですが、
foo << "smile", 100
という書き方をするためのメソッド定義が分かりません。
0253デフォルトの名無しさん
2010/12/20(月) 20:27:270254251
2010/12/20(月) 21:06:25メニューに"smile"、100円を足す正しいメソッドは
mac.menu << "smile", 100
だと思うのですが、どう考えてもこの表記では書けません。
0255デフォルトの名無しさん
2010/12/20(月) 21:16:540256デフォルトの名無しさん
2010/12/20(月) 21:57:37知らなかった
0257デフォルトの名無しさん
2010/12/21(火) 00:16:43menu :mac do
item 'smile', 100
item 'potato', 50
end
とか書いてしまいそうだ。
0258デフォルトの名無しさん
2010/12/21(火) 03:24:25aryだけを配列としたいのですが、昔はPGResult.resultっていうのがあったみたいなんですが
今はないみたいで PGResult.each do ふにゃらら endでやっているのですが、
これで正しいのでしょうか? なにか釈然としません。
0259デフォルトの名無しさん
2010/12/21(火) 03:32:43ふが
ふが
0260デフォルトの名無しさん
2010/12/21(火) 06:26:53すでに回答があるように、言語使用上不可能。演算子はそういうもんだと思ってくれ。
回避策は、気に入ってもらえるかわかんないけど
mac.menu << "smile", 100
ではななくて
mac.menu "smile", 100
にするくらいしかない。
def menu(name=nil, price=nil)
# 引数が指定されていれば追加する
@menu << [name, price] unless name.nil? # メニューを返す
@menu
end
または
def menu(*args)
# 引数が指定されていれば追加する
@menu << args unless args.empty?
# メニューを返す
@menu
end
0261デフォルトの名無しさん
2010/12/21(火) 09:14:31よくRuby(Rails)が使用されている代表的なWebサービスとして、
Twitterが挙げられますが、以前はすべてRubyで書かれていたけど、
最近はフロントエンドがRubyで、バックエンドがScalaだと聞きます。
この場合のフロントエンド、バックエンドというのはどの部分を指すのでしょうか?
素人考えにはフロントエンドがUI、バックエンドがDBかなぁとか想像してますが、
そんな分け方するのかな?と疑問に思いました
0262247
2010/12/21(火) 11:43:51ありがとうございます。おっしゃるとおり,Rails3が入ってます。
gem list -l
actionmailer (3.0.1, 2.3.5, 1.3.6)
actionpack (3.0.1, 2.3.5, 1.13.6)
actionwebservice (1.2.6)
activemodel (3.0.1)
activerecord (3.0.1, 2.3.5, 1.15.6)
activeresource (3.0.1, 2.3.5)
activesupport (3.0.1, 3.0.0, 2.3.5, 1.4.4)
rails (3.0.1, 2.3.5, 1.2.6)
ただp Date::today.prev_monthと変更しても,
undefined method `prev_month' for #<Date: 4911103/2,0,2299161> (NoMethodError)
になります。
パッチレベルが低いからでしょうか?
システムデフォルトのとは別にrubyをインスコすべきか,悩みます。
とりあえず,お礼とご報告まで。
0263デフォルトの名無しさん
2010/12/21(火) 12:47:16rvm入れてgem環境分けておけばいいよ
Rails3が原因なら外しておける
0264デフォルトの名無しさん
2010/12/21(火) 14:04:33使っているActiveSupportのバージョンに応じてprevとlast使い分けて
くだされ。
2.3.8 は移行を意図しているので両方あるはずだけど。
0265デフォルトの名無しさん
2010/12/21(火) 17:15:46公式リファレンスのEnumerable#max {|a, b| ... }の説明でめちゃくちゃ混乱してるんだ
なぜブロックのパラメータはふたつ?とか
「ブロックの値は〜期待してます。」の意味とか
全然理解できない
誰か使い方を教えてください
0266デフォルトの名無しさん
2010/12/21(火) 17:23:55foo.max は
foo.max{|a,b|a<=>b} と同じ
比較のための値の計算の方法じゃなくて、大小比較の方法をブロックで外付けしてやるわけ。
0267デフォルトの名無しさん
2010/12/21(火) 17:34:061. 数値の配列を sort メソッドを使わずに自力でソートするプログラムを書く
2. 1 を拡張して任意のオブジェクトの配列をソートするプログラムを書く
ここらへんまでやれば、たとえ 1 と 2 がうまく書けなかったとしても
max やら sort みたいに比較関数を渡すメソッドの使い方ぐらいは理解できるはず
0269デフォルトの名無しさん
2010/12/21(火) 21:01:210270デフォルトの名無しさん
2010/12/21(火) 21:44:18Rubyに絡めてくれれば乗る人もいたんだろうけど…
0271デフォルトの名無しさん
2010/12/21(火) 21:51:19そうですかー
>>261が理解出来たら、じゃあなんでRubyじゃダメだったのか、単に速度が遅かったからか、大量のつぶやきをさばけなかったのか、もしくは動的型によるリファクタのしづらさとか、それとももっと違う原因なのか、という部分も知りたいと思ってました
ここじゃスレ違いだとすると、どこで聞くのが適切でしょうか?
0272デフォルトの名無しさん
2010/12/21(火) 21:52:14DBやファイルや他のデーモン・サービスと連携する部分がバック
だと思えばいいんじゃないかね。
0273デフォルトの名無しさん
2010/12/21(火) 22:13:27これは単純に(ある程度の)足し算というレベルで高い
ごっつい処理をたくさんの人に提供、とかいうのだと、最終的にPHPのほうが最低2倍は捌ける人数多いと思う
でも、それでもRubyを使う人がいる
この世のあらゆるプログラムをCで記述しないのと同じような理屈
Rubyで初期開発して、処理負荷が間に合わなくなったら他の言語に移る、というのは
Ruby的にはまったく悲しむべき問題ですらない
むしろRubyの優位性を示す出来事であるとすら思う人が多いはず
公開プロダクトを最初から最後までRubyで運用し倒しましたとかいうのは
その人がお金持ちか基地外か過疎プロダクトかどれか
0274デフォルトの名無しさん
2010/12/21(火) 23:04:46matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな
0275デフォルトの名無しさん
2010/12/21(火) 23:52:110276デフォルトの名無しさん
2010/12/22(水) 01:13:36特に作者としては自然なことだと思うが
0277デフォルトの名無しさん
2010/12/22(水) 08:07:10Net::HTTP.Proxy メソッドは、
Net::HTTP を継承したクラスを作成して、
作成した クラスを返します。
Ruby は非常に柔軟な言語であるため、
メソッド中に動的にクラスを作成して、
そのクラスを返すということが可能です。
このメソッドの中にクラスって意味がわかりません。
普通、クラスを作ってその中にメソッドを定義するのではないですか?
0278デフォルトの名無しさん
2010/12/22(水) 08:11:08Windowsで下記のプログラムを-Eを付けて実行するとEncoding::UndefinedConversionErrorが
発生します。どのように修正すべきか教えていただけませんか
# coding: utf-8
require 'pstore'
db = PStore.new("pstest")
str = "あいうえお"
db.transaction{ db[1] = str }
db.transaction{ puts db[1] }
C:\home\mechanize>ruby -v
ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mswin32]
C:\home\mechanize>ruby -Ecp932:utf-8 hoge.rb
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `write': "\xE3" from ASCII-8BIT to UTF-8
in conversion from ASCII-8BIT to Windows-31J (Encoding::UndefinedConversionError)
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `save_data_with_fast_strategy'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:473:in `save_data'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:335:in `block in transaction'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:361:in `synchronize'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:321:in `transaction'
from hoge.rb:5:in `<main>'
0279デフォルトの名無しさん
2010/12/22(水) 08:55:56…これどうしよう
>>277
たいしたことしてない
Net::HTTP.Proxy メソッドの定義見るとわかるが、ClassクラスのオブジェクトをClass.newで作って、
それにmodule_evalでクラスインスタンス変数の定義書いて、そのClassオブジェクトを返すようにしてる
klass = Class.new
klass.module_eval{
attr_reader :name
def initialize
@name='A'
end
}
p klass.new.name #=> 'A'
ぶっちゃけこんなマニュアルの中でこんな宣伝する必要なんてないと思うけどね
1.9時代においては削除されるべき無用で紛らわしい雑談だと思うよ、個人的には
0280デフォルトの名無しさん
2010/12/22(水) 09:11:16マニュアルじゃなくて雑誌記事でわ?
0281デフォルトの名無しさん
2010/12/22(水) 09:13:01当たり前だが
# coding: utf-8
require 'pstore'
db = PStore.new("pstest")
str = "あいうえお"
@evacuated_encoding_for_pstore = Encoding.default_external
Encoding.default_external = Encoding::ASCII_8BIT
db.transaction{ db[1] = str }
db.transaction{ puts db[1] }
Encoding.default_external = @evacuated_encoding_for_pstore
puts してるのは UTF-8 エンコーディングの UTF-8 バイナリ列のままだから
コマンドプロンプトでは化けるので注意
0282デフォルトの名無しさん
2010/12/22(水) 09:28:50ありがとうございました。
リファレンスちゃんと理解できるよう出直します。
私のところでは、化けずに出力されてます。
0283デフォルトの名無しさん
2010/12/22(水) 09:33:59ユーザー側にあんまり非はないし、この対処をマニュアルから読み取るのは不可能なんじゃないかな
0284デフォルトの名無しさん
2010/12/22(水) 10:19:08言語のユーザーや仕事の開発者としては、Ruby向いてないところに差し迫ったら乗り換えて当然と思ってしまうけど
Matzは立場上(本気でそう思ってなくても)悔しがらないとあかんのでは?w
0285デフォルトの名無しさん
2010/12/22(水) 10:44:23>メソッド中に動的にクラスを作成して、
>そのクラスを返すということが可能です。
>
>このメソッドの中にクラスって意味がわかりません。
メソッドの中でクラスを作成し、それを返す。ただそれだけ。
これはもとのマニュアルが悪いな。「動的に」なんて初心者にわかるはずがない。
直すなら
「メソッドの中でクラスを作成して返します」
「メソッドを実行するたびにクラスを作成して返すことができます」
とか。
0286デフォルトの名無しさん
2010/12/22(水) 11:18:44それは単に表面的なスタイルの問題じゃないの?
インデント強制だからPython は嫌だとか言ってる人たちを思い出すな
0287デフォルトの名無しさん
2010/12/22(水) 11:20:24アンカーミスだよな?
0289デフォルトの名無しさん
2010/12/22(水) 12:22:120290デフォルトの名無しさん
2010/12/22(水) 12:27:250291デフォルトの名無しさん
2010/12/22(水) 15:23:46jrubyで文字コード変換するなということなんだろうか
0292デフォルトの名無しさん
2010/12/22(水) 16:21:18もうJava標準APIを呼んでしまえ。
String#getBytesとかエンコード指定付きコンストラクタとか
Reader/Writerとか。
0293デフォルトの名無しさん
2010/12/22(水) 19:09:44>matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな
うそだぁ
ソースは?
0294デフォルトの名無しさん
2010/12/23(木) 07:23:26そんなことはない
現在のJRubyの動作は基本的に完全だと外人さんも太鼓判を押している
0295デフォルトの名無しさん
2010/12/23(木) 07:46:49まあNKF.guess組み込んで「エンコーディング対応しました」とか言う日本人もいるからどっちもどっちだが
案の定ISO-8859-xで盛大に誤爆して現在もコードまだ直ってない
君のことだよMechanize
0296デフォルトの名無しさん
2010/12/23(木) 09:55:16nkfみたいな文脈で外人の太鼓判は信用できないwww
0297デフォルトの名無しさん
2010/12/23(木) 11:55:09たとえば、
rubyでhtmlタグを文字列から除去する方法(正規表現) - YomuKaku Memo
http://memo.yomukaku.net/entries/51
のstrip_tagsメソッド
irbではエラー
str= open("http://railstutorial.org/ruby-on-rails-tutorial-book")
p strip_tags str
0298デフォルトの名無しさん
2010/12/23(木) 12:18:43いろいろ依存しているライブラリがあるので、
require 'erb'
require 'active_support/dependencies/autoload'
require 'active_support/core_ext/class/attribute_accessors'
require 'active_support/core_ext/string/encoding'
require 'active_support/concern'
# 面倒&初期化の重さを厭わないなら require 'active_support/all'
require 'action_view/helpers/capture_helper'
require 'action_view/helpers/sanitize_helper'
必要ならさらに include ActionView::Helpers::SanitizeHelper
0299デフォルトの名無しさん
2010/12/23(木) 12:36:440300デフォルトの名無しさん
2010/12/23(木) 12:41:22適当にアプリ作る。
そこで
rails console
でrailsがバックにあるirbが使える
0301デフォルトの名無しさん
2010/12/23(木) 13:59:31includeされるわけじゃない(本来ビューレンダリング用のものだし)ので、
そこは必要。
ただし、helper というビューオブジェクトが存在するので、include
しなくても
helper.strip_tags('...')
とは出来る。
0302デフォルトの名無しさん
2010/12/23(木) 14:20:31日本語のまとまった情報とか無いですよね・・・
0303デフォルトの名無しさん
2010/12/23(木) 15:24:50分かるので、あとはそれを使う環境を整えるために試行錯誤するだけ。
0304デフォルトの名無しさん
2010/12/24(金) 01:21:41まあ、Railsも使っててRuby本体にも造詣のある人は少なくないだろうし
わかるんじゃないかなあと思う
RailsのことはRailsスレでやれバーカバーカというよりは、単に遭遇確率の問題
0305デフォルトの名無しさん
2010/12/24(金) 13:21:04足りないメソッドあるし使えないから面倒くさい
rails consoleのhelperから使った方がいいな
前はrails consoleから簡単に使えないメソッドもあったし(確かcontrolに依存していたり、内部で擬似的にリクエスト発生が必要だったり?)
そういうのは徐々に改善されていっているようだけど
0306デフォルトの名無しさん
2010/12/25(土) 00:35:43インストール。
$ gem install rcodetools
0307デフォルトの名無しさん
2010/12/25(土) 11:38:05[ruby-list:47063] Ruby逆引きハンドブック & xmpfilter (was: Re
http://permalink.gmane.org/gmane.comp.lang.ruby.japanese/6175
これか、よくブログでコードに
1 + 2 # => 2
と表示されるのってxmpfilterなのか
エディタのサポートあれば便利だな
0308デフォルトの名無しさん
2010/12/25(土) 11:49:390309デフォルトの名無しさん
2010/12/25(土) 14:46:17ふとバイナリモードにしてみたところ、これまで30秒程かかっていた読み込みが
1秒足らずで終わりました。後から強制エンコーディングするにもおつりが出る速さです。
なぜこんなにテキストモードのI/Oは遅いのでしょうか?
0310デフォルトの名無しさん
2010/12/25(土) 14:55:35知らないよ
0311デフォルトの名無しさん
2010/12/25(土) 15:06:57そりゃ1バイトずつ内容チェックしていって
CR LF の並びがあれば "\n" に変換するという「無駄」な処理があるからに決まってるじゃん
変換がないだけならただ読んで終了だもの
0312デフォルトの名無しさん
2010/12/25(土) 15:12:05テキストモードで「改行コードを置換する」だけの処理がメインの処理よりも時間がかかるなんてことがあるのだろうか!
0313デフォルトの名無しさん
2010/12/25(土) 16:29:23フールセーフ(アフォでも安全)というか、
自動判別させる処理とか裏で動いているから、
0314デフォルトの名無しさん
2010/12/25(土) 16:30:35File.open("sentence.txt").each{|line| ...
0315デフォルトの名無しさん
2010/12/25(土) 16:46:34openにその変数を指定するとかではなく?
0316デフォルトの名無しさん
2010/12/25(土) 16:55:22そういう一手間がいるんですね。
C:\>xxx.rb xxx.txt > xxx1.txt
みたいなわけにはいかないのでしょうか?他の言語かじったときのイメージでこんな
かんじでいけなるのかと勝手に思ってたのですが。
ぐぐってもでてこないのだから、ダメなんでしょうね。
0317デフォルトの名無しさん
2010/12/25(土) 16:59:09ちなみにCSVファイルの加工です。
0318デフォルトの名無しさん
2010/12/25(土) 17:04:40スクリプト起動時の引数に指定してそれを利用するパターン(推奨)
inputed = ARGV[0]
file = open(inputed, 'rb'){|f| f.readlines}
puts "#{inputed} has #{file.size} lines"
実行:
$ ruby hoge.rb sentence1.txt
$ ruby hoge.rb sentence2.txt
スクリプトを起動して対話的に指定するパターン(一見凄いが後々意外とめんどい)
puts 'ENTER FILEPATH: '
inputed = $stdin.gets.chomp
file = open(inputed){|f| f.readlines}
puts "#{inputed} has #{file.size} lines"
実行:
$ ruby hoge.rb
ENTER FILEPATH: ← ここでキーボードからファイルパス入力してenter
ちなみにこの file.size は実際の行数を必ずしも反映してない
あと、ユーザーの入力が信用できない場合openにそのまま渡してはいけない
0319デフォルトの名無しさん
2010/12/25(土) 17:05:37それは出力だろ
出力ファイルの名前のことなのか
君のレスは情報の多くが欠落している
欠落した情報でググっても何も出てくるはずもない
0320デフォルトの名無しさん
2010/12/25(土) 17:06:51普通に書けば、
while line = gets
puts(line)
end
組み込み変数で明示的に書けば、
while line = $stdin.gets
$stdout.puts(line)
end
ドヤ顔したければ、
while gets; puts $_; end
0321デフォルトの名無しさん
2010/12/25(土) 17:08:09初心者スレに初心者がレスすると不幸を生むから見てるだけのほうがいい。
0322デフォルトの名無しさん
2010/12/25(土) 17:12:30Rubyの標準入力はIOオブジェクトとしてグローバル変数$stdinからアクセス可能
Rubyの標準出力はIOオブジェクトとしてグローバル変数$stdoutからアクセス可能
puts や print のデフォルト出力先は $stdout
スクリプト起動時の引数はARGV
「起動時引数をファイルとみなして開いたIOオブジェクトとみなすが、空の場合は標準入力に切り替える」のはARGF
…ていうか、標準入力や標準出力、起動時の引数を知ってればこれにたどり着くだろうから、
もしかして「コンソール」という言葉を知ってて呼び名を知らないんか
0323デフォルトの名無しさん
2010/12/25(土) 17:13:37とりあえずopenで開く人が多くて、なんだかなぁって感じがする。
普通は標準入出力使ってフィルタを作るだろ…言わなくてもそうなるだろ…?
どうしてopenつかうんだよもぉぉぉぉぉ!
0324デフォルトの名無しさん
2010/12/25(土) 17:15:08open して read する
対象のファイルの名前
を"コンソール"から指定したいのだろ
0325デフォルトの名無しさん
2010/12/25(土) 17:16:27なんなんだよ!1行ずつ読み込んで1行ずつ処理しろよぉ!
そうしたほうが省メモリだろぅ!
「でもメモリいっぱいあるし」
まぁそうだけどさぁ…><;
メリークリスマス!
0326デフォルトの名無しさん
2010/12/25(土) 17:18:580327デフォルトの名無しさん
2010/12/25(土) 17:19:24File.open("sentence.txt").each{|line|
# ここで読み込んだ内容を別途ファイルに保存したいが、
# 書き方がわからないので空欄にして質問しました
}
という質問の可能性を排除するような視野の狭い人は初心者スレで回答すべきではない
そもそも読み込み対象のファイル名は既に記載されてるではないか
なんでそれをユーザー入力させると誤読するのかマジ理解不能
0328デフォルトの名無しさん
2010/12/25(土) 17:22:010329デフォルトの名無しさん
2010/12/25(土) 17:22:030330デフォルトの名無しさん
2010/12/25(土) 17:23:55いくつもの可能性があるからいちいち聞きなおさにゃならん
記載されてるファイル名をベタ書きしたくないと普通は解釈する
0331デフォルトの名無しさん
2010/12/25(土) 17:24:59それは元質問の「スクリプトファイルにテキスト名を指定」で既に行われてるから
引数によるファイル名の指定をやりたくないという質問なのこれは
0332デフォルトの名無しさん
2010/12/25(土) 17:27:29テキスト名をコンソールで指定したい、だからファイル名を対話的に入力したいんだろ要は
>>318の後半でいいじゃん
0333デフォルトの名無しさん
2010/12/25(土) 17:30:220334デフォルトの名無しさん
2010/12/25(土) 17:30:39引数から入力したいならそういう風に言うはずだから、端末から入力する方法を答えればいい
とりあえずは gets でいいんじゃね
0335デフォルトの名無しさん
2010/12/25(土) 17:42:19ruby hoge.rb in.txt > out.txt
を
「ruby を hoge.rb と in.txt を引数にして起動し、標準入力のリダイレクトで out.txt に書き出す」
と読めてるかどうかでかなり説明レベルが違うような…
これなら「起動時の引数をrubyから取得する方法」と「標準出力
って、標準出力にはそれこそ普通に出力されててそれ以降はRubyの仕事じゃないじゃないですかやだー!
…引数を複数取ってrubyで利用する方法がわかればいいような気がする
ruby hoge.rb in.txt out.txt
と書いて in.txt を読み込んで out.txt に書き出す、ができれば満足されそうな
つまりはシェルのリダイレクトやらパイプやらを使用したくないんじゃないかと
>>316を読む限り、コンソールという概念を勘違いしてるという読みは正しいと思う
0336デフォルトの名無しさん
2010/12/25(土) 17:46:05>>316の「ほかの言語」はawkとかだと推測
■ このスレッドは過去ログ倉庫に格納されています